我正在尝试使用 ToString() 方法显示 double 值。 该值为 1.000000000000113。 , 使用 Double.ToString("F16") 结果 1.0000000000001100 , 使用 Double.ToString("F17") 结果 1.00000000000011000
我试过 Double.ToString("0.0000000000000000") 结果 1.0000000000001100
似乎 ToString() 将第 14 个数字以上的所有小数设置为零。
我正在使用 .Net 4.5.2。 我怎么解决这个问题。
最佳答案
float
和 double
float ( IEEE 754 ) 作用于符号、尾数 和指数 以 2 为底,恰好数字 1.000000000000113
不适合 以 2 为底数。
但是,我们确实有浮点类型确实在 base 10(decimal
)上工作,它对有理数有更高的精度,还没有数值范围
-
float
近似范围(±1.5 x 10^−45
到±3.4 x 1038
) -
double
近似范围(±5.0 × 10^−324
到±1.7 × 10308
) -
decimal
近似范围(±1.0 x 10^-28
到±7.9228 x 1028
)
示例
double val = 1.000000000000113;
Console.WriteLine(val);
decimal val2 = 1.000000000000113m;
Console.WriteLine(val2);
输出
1.00000000000011
1.000000000000113
关于C# Double.ToString() 错误结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52418167/