我试图使用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.我怎么解决这个问题.
A float和double浮点数(IEEE 754)在基数2中的符号,尾数和指数上工作,恰好这个数字不适合基数2.1.000000000000113
然而,我们确实有浮点类型做的工作基地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);
Run Code Online (Sandbox Code Playgroud)
产量
1.00000000000011
1.000000000000113
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |