为什么double返回这个值?C#


why does double return this value? C#

本问题已经有最佳答案,请猛点这里访问。
1
2
double sth = 250 - 249.99;
Console.WriteLine(sth);

为什么返回sth像0.009994507,而不是0.01?


浮点数(在本例中为双精度)不能精确表示十进制值。有关详细信息,请参阅此处的此页

如果您需要更精确的表示,请使用decimal


有很多小数具有无限的二进制表示。你所经历的正是这种情况。

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


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

您可以使用string.format只打印前2个数字。

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