0

为什么这段代码会产生正确的答案,除了最后的 .000000001 ?

我有一个 DataGridView,在一列中有价格。此代码沿网格向下移动,获取值并将它们相加。

double pp = 0;
for (int i = 0; i < PPUTDG.RowCount; i++)
{
    try
    {
      pp = pp + Convert.ToDouble(PPUTDG[16, i].Value.ToString().Replace("$",""));
    }
    catch { }
}

然后我在 pp 上调用 .ToString()。这些值应该加到 6240.75,除了我得到 6240.75000000001。

谢谢。

4

2 回答 2

3

关于这一点有很多可以发现的。我已经给了一个,这个: http: //floating-point-gui.de/basic/是另一个。

简而言之:

“......在内部,计算机使用的格式(二进制浮点)根本无法准确表示像 0.1、0.2 或 0.3 这样的数字。”

确保您确实需要浮点类型。例如,在处理金钱时,最好使用decimal或整数并以美分进行计算。

一个好的经验法则是,如果小数舍入错误在您的应用程序中没有问题,则可以使用浮点类型。否则,使用其他东西。

于 2013-07-09T06:27:13.603 回答
1

对于财务计算,请使用小数类型而不是双精度或浮点类型。

于 2013-07-09T06:33:27.033 回答