将指数形式的数字转换为十进制

时间:2018-05-12 09:13:35

标签: c# double decimal exponential

我正在尝试将指数形式的数字转换为其十进制等值。例如:

3e43 => 3 000 000 000 000 000 000 000 000 000 000 000 000 000 000 0

我已经阅读了文档,并且说我可能会这样做 double.Parse(expNumber.ToString(), NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint);

但是当我尝试将3e43转换为十进制时,它只是将其转换为3E + 43而不是我期望的数字(我知道它是关于双数据类型精度的)。有没有办法做到这一点?

另外,有没有办法将3e-43转换为十进制等值?似乎decimal.toString这次没有工作,因为它是一个很小的数字。

1 个答案:

答案 0 :(得分:1)

如果你想看到所有的零

只需使用Double.ToString它有各种重载来做不同的事情

var input = "3e43";
var val = double.Parse(input, NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint);
Console.WriteLine(val);
Console.WriteLine(val.ToString("N0"));
Console.WriteLine(val.ToString("f"));

<强>输出

3E+43
30,000,000,000,000,000,000,000,000,000,000,000,000,000,000
30000000000000000000000000000000000000000000.00

Full demo here

其他资源

Standard Numeric Format Strings