double sth = 250 - 249.99;
Console.WriteLine(sth);
为什么这会返回sth
,如 0.009994507 ,而不是 0.01 ?
答案 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/