float totalAmount = 0;
.
.
.//totalAmount assigned value 1.05 correctly
.
totalAmount += float.Parse(dataRow["Amt"].ToString()); //where dataRow["Amt"] has value 4.93
我得到的totalAmount的答案是5.97999954而不是5.98
为什么会这样?
答案 0 :(得分:9)
在积累之前,你声明totalAmount
是1.05。这将给出预期的结果:
1.05
4.93 +
------
5.98
您将获得5.97999954,这基本上是IEEE浮点数最佳代表的答案,这是一种二进制格式,无法准确表达每个十进制数字。例如,相当常见的0.1 10 具有无限二进制浮点表示.0001100110011...
2 。
维基百科的链接,好的衡量标准:http://en.wikipedia.org/wiki/Floating_point#Accuracy_problems;)
答案 1 :(得分:1)
答案 2 :(得分:0)
jdmichal是正确的,但我要补充一点,如果你真的希望这个正确加起来,你可以使用Decimal类型(包括十进制文字)。