为什么双重返回这个值? C#

时间:2017-01-29 21:13:39

标签: c#

double sth = 250 - 249.99;
Console.WriteLine(sth);

为什么这会返回sth,如 0.009994507 ,而不是 0.01

3 个答案:

答案 0 :(得分:1)

浮点数(在这种情况下为双精度数)不能完全表示十进制值。有关详细信息,请参阅this page here

如果您需要更准确的表示,请改用if (isset($dict[$e])) { /* do the displaying work here */ }

答案 1 :(得分:0)

因为当您打印双精度数据时,您将打印所有双精度值,而不仅仅是点数位后的第一个x。

您可以使用String.Format仅打印前2个数字。

        double sth = 250.00d - 249.99d;
        string sthString = String.Format("{0:0.00}", sth);
        Console.WriteLine(sthString);

答案 2 :(得分:0)

有很多小数都有无限的二进制表示。你遇到的正是这种情况。

有关此主题的更多信息,请参阅:http://www.exploringbinary.com/why-0-point-1-does-not-exist-in-floating-point/