【发布时间】:2016-07-06 13:07:34
【问题描述】:
使用 Excel 2013,将其输入两个单元格会产生不同的结果。
=ROUND((10.45-10.00)/1,1) = 0.4
但是
=ROUND(0.45/1,1) = 0.5
我不知道为什么会这样。有人解释一下吗?
【问题讨论】:
标签: excel floating-point excel-formula rounding
使用 Excel 2013,将其输入两个单元格会产生不同的结果。
=ROUND((10.45-10.00)/1,1) = 0.4
但是
=ROUND(0.45/1,1) = 0.5
我不知道为什么会这样。有人解释一下吗?
【问题讨论】:
标签: excel floating-point excel-formula rounding
由于 Excel 使用浮点数学,因此不能保证结果准确。在我的 Excel 2013 安装中,如果我在单元格中输入 =10.45-10.00,然后将该单元格更改为精度为 30 位小数的数字,则实际答案是 0.449999999999999000000000000000。由于0.44999... 和0.45 位于舍入边界的两侧,因此它们以不同的方式舍入到小数点后一位。
编辑另请参阅 this answer 以及问题和其他答案,其中更详细地说明了 Excel 的数学为何不精确。
【讨论】:
看起来顶部的计算正在创造一个无限小的差异。要查看这一点,请将公式从 ROUND 函数中提取出来。使用“增加小数点”按钮,将这两个值扩展至小数点后 15 位以上。您会看到最高值实际上是 0.449999999999999。
我不知道它为什么会这样做。
【讨论】: