Google表格 - 减法会产生意外结果

时间:2018-05-30 15:43:21

标签: google-sheets

我有以下表格:

spreadsheet cells

为什么具有相同值(Get-WmiObject -Class Win32_Printer | where{$_.Network -eq ‘true‘}| foreach{$_.delete()} & J7)的两个单元格的差异不等于零?

Here is an example spreadsheet

2 个答案:

答案 0 :(得分:2)

切换到该单元格上的格式/数字/科学,您可以看到剩余的值:

scientific format

这些舍入误差显然是常见的。您可以使用=E3-round(E3,2)等公式查看任何单元格:

rounding remainders

显然,在条件格式中允许一个较小的值可以避免这个问题:

conditional formatting formula

答案 1 :(得分:0)

要添加到@ df778899的答案,这不仅仅是一个常规事物"。这是浮点算术的一个不可避免的后果。

令人惊讶的是,Google显然以浮点格式表示内部数字。对于相同的数字,Excel在相等比较中给出了正确的结果,这表明与Google不同,Excel的表示是定点的。

  • 编辑:经过仔细检查,可以在Excel中找到浮点错误的例子,所以这段不正确。

计算机科学专业的学生总是使用FP数字的近似和非精确比较。不过,我认为从电子表格用户那里得到这一点是不合理的。

实际上,在将小数与其他小数进行比较时,请避免使用

=if(j7=j8, ...)

或EQ()。相反,使用

=if(abs(J7-J8)<0.0001, ...)

(具有适当的任意精度)