当将电子表格中的两列相乘时,乘积相差 0.03 美元;既有大于,也有小于,没有任何明显的一致性,我该如何解决这个问题?
答案1
我只是在这里猜测一下(直到您提供其他精确的细胞数量):
当对数字进行乘法(和除法)时,如果你在屏幕上看到(并期望)有 2 位小数,并且想对 2 位小数进行进一步的计算,你应该总是使用ROUND()
函数。在内部,这些数字可能不同。在屏幕上您可以看到,0.34
但在内部,这可能是。使用此单元格进行进一步计算时,将使用0,335643564
内部数字( )。0,335643564
您有两个选择。ROUND()
对您的单元格值或公式进行四舍五入'Route Pay and Miles'!$Q$27
,或对您的其他公式进行四舍五入。即=IF($F25=30,G25*ROUND('Route Pay and Miles'!$Q$27,2)," ")
其中,2
是预期的小数。
答案2
在任何特定情况下,原因可能确实在于数字(如Rik
答案中的示例)和数字格式,显示的小数小于值中现有的小数。 并且ROUND
确实提供了一种解决方法(尽管有时并不理想)。
然而,人们遇到这种情况还有一个不同的、相当“阴险”的原因。那就是 Excel 在二进制计算机世界中使用十进制数执行算术的惯例。人们很少注意到这些差异,因为它们发生在值的第 15 位有效数字中。因此,输入的数字将精确地是输入的值,但在执行任何算术时,两个“完美”数字可能会(也可能不会,通常是“不”)给出不完美的结果。因此 1+5 可能会给出 6.00000000000002 的结果。
这是无法修复的。尽管 Excel 内部使用 27-28 位数字并且可以强制消除这些错误,但它们遵循 1985 年选择的惯例,并没有这样做。但有趣的是,他们现在(2023 年)似乎使一些额外的准确性可以恢复。这在电子表格中并不重要,但很有趣。
解决这个问题的办法也是使用ROUND
函数组或TRUNC
函数,当不准确的元件值或单个结果很重要时。通常情况不会如此,但对于比较来说,这很重要。
另一种不太理想的(通常)方法是进入程序选项并设置要使用的选项,Precision As Displayed
以便您通常格式化为比 Excel 提供的精度更低的格式,它将为您处理截断。由于您必须不断地来回更改所需的电子表格,这可能会导致...困难。但它可能在涉及金钱(尤其是工资单)的工作中很方便。人们总是可以打开一个新的 Excel 实例来处理此类电子表格,记住在打开电子表格之前设置选项。不过,在使用真实文件之前,请先进行测试以确保它不会以某种方式影响您正在运行的其他 Excel 实例。(“第二个实例”是指 Excel 的新运行版本,对于另一个正在运行的实例来说,它看起来就像任何其他“不是它”的程序。它明确地并不意味着只是打开一个新窗口或任何等效的东西。)