Преобразовать экспоненциальное число в полное число - PullRequest
0 голосов
/ 09 мая 2018

Преобразовать "2.3456754342345466E+36" в полный номер:

var sm = Convert.ToDouble(splitted[0]) + Convert.ToDouble(splitted[1]);  

**//sm value is === "2.3456754342345466E+36"**

var d = Decimal.Parse(sm.ToString(), 
System.Globalization.NumberStyles.Float);
if (splitted[0].Length ==Convert.ToString(d).Length)
 {
 sum.Add(""+sm);
 }
else
{
 sum.Add(""+splitted[0]);
}

Decimal.Parse бросает:

Значение было либо слишком большим, либо слишком маленьким для десятичного числа

1 Ответ

0 голосов
/ 09 мая 2018

Это потому, что максимальное значение decimal составляет около 7.9e+28, поэтому оно не может соответствовать вашему номеру. Вам нужно хранить его в double. Если вы хотите напечатать число, вы можете отформатировать его любым способом, используя метод ToString() со спецификатором форматирования. Например, F0 даст прямое число без дроби:

var sm = "2.3456754342345466E+36";
var d = double.Parse(sm, System.Globalization.NumberStyles.Float);
Console.WriteLine(d.ToString("F0")); //Prints 2345675434234550000000000000000000000
...