Это потому, что максимальное значение 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