2015-04-29 3 views
2

5.35754303593134E + 300 до 53575430359313400000000000000000000 ... 000000000преобразовать очень большой экспоненциальной десятичной в C#

Может кто-нибудь сделать это, потому что это число очень велико?

Я попытался:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      double s = double.Parse((System.Math.Pow(2, 999)).ToString(), System.Globalization.NumberStyles.Float); 
      Console.WriteLine("value={0}", s); 
      Console.ReadKey(); 
     } 
    } 
} 
+0

Вам понадобится тип строки. –

+0

Для дальнейшего использования вам не нужно добавлять теги '
' в код, просто отступьте его на четыре пробела, и встроенное форматирование определит его как код. –

+0

Не работает. он дает --- Значение было слишком большим или слишком маленьким для десятичного числа. –

ответ

1

Выполните одно из следующих действий,

Console.WriteLine(s.ToString("N0")); //comma separated 
Console.WriteLine(s.ToString("F0")); 

Обе работы.

+0

сделано..thanks это работает. –

+0

Добро пожаловать. Возможно, вы также хотите отметить ответ, так как на ваш вопрос ответили. – Abhishek

0

Название и код говорит разные вещи, но ..

Основном, вы не можете. decimal не может удерживать это значение, потому что оно находится вне диапазона. Он варьируется от 7.9 x 10 до 7.9 x 10 .

Вы можете сохранить его на двойной (какой тип Math.Pow возврата и вы не даже нужно получить его строковое представление и разобрать его снова удвоится в таком случае) или BigInteger.

double s = Math.Pow(2, 999); 

или

BigInteger s = (BigInteger)Math.Pow(2, 999); 

Если вы хотите получить это значение, это строковое представление, вы можете использовать "E" standard numeric format как;

s.ToString("E14") // 5,35754303593134E+300 

Или вы можете использовать Jon Скит DoubleConverter class который ипостась этого значения;

DoubleConverter.ToExactString(s) // 5357543035931336604742125245300009052807024058527668037218751941851755255624680612465991894078479290637973364587765734125935726428461570217992288787349287401967283887412115492710537302531185570938977091076523237491790970633699383779582771973038531457285598238843271083830214915826312193418602834034688 
+0

как? можете ли вы дать код? –

+0

@amitpradhan Добавлен пример с его значением и частью представления строк. –

Смежные вопросы