将指数形式的数字转为小数

Turn number in exponential form to decimal

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

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 似乎不起作用,因为它太小了。

如果你想看到所有的零

只需使用 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