求教关于Excel的神奇现象,无法解释!

2025-04-16 18:46:10
推荐回答(2个)
回答1:

是二进制浮点数运算结果所致。

内存对浮点数运算造成的结果。观看下列代码,运行结构大相径庭:

Private Sub Command1_Click()

    Print Round(0.3 * 5)

    Print Round(0.3) * 5

    Print Round((40000.6 - 40000.3) * 5)

    Print Round(1.5)

End Sub

所以无需吃惊。

回答2:

=round((40000.6-40000.3)*5,) 40000.6-40000.3 被算成了 0.29999999999999
Excel 浮点 运算的精度问题, 参照Office官方解释:
https://support.microsoft.com/zh-cn/kb/78113

Excel 提供两种基本方法来弥补舍入误差:ROUND 函数,以及“以显示精度为准”或“将精度设为所显示的精度”工作簿选项。
方法 1:ROUND 函数
以下示例使用上面的数据,并使用 ROUND 函数强制将数字舍为五位数。这可让您成功地将结果与另一个值进行比较。A1:1.2E+200
B1:1E+100
C1:=ROUND(A1+B1,5)

结果为 1.2E+200。
D1:=IF(C1=1.2E+200, TRUE, FALSE)

结果值为 TRUE。
方法 2:以显示精度为准
在某些情况下,您可以使用“以显示精度为准”选项来防止四舍五入错误影响您的工作。此选项会强制将工作表中每个数字的值成为显示的值。要打开此选项,请按照下列步骤操作:
在 Excel 2003 和更早的版本中,在“工具”菜单上单击“选项”。
在“重新计算”选项卡上,单击“以显示精度为准”复选框以将其选中。
在 Excel 2007 中,单击“Office 按钮”,单击“Excel 选项”,然后单击“高级”类别。
在“计算此工作簿时”部分中,选择所需的工作簿,然后选中“将精度设为所显示的精度”复选框。