首页 > 解决方案 > Excel 向上舍入一条记录中的数字,向下舍入另一条记录中的相同数字

问题描述

Excel 不一致地舍入数字,这导致了我的问题。使用 ROUND() 时,有时会将特定数字向上舍入,而有时会将相同的值向下舍入。

我尝试将 Excel 设置为在设置中显示确切的值,但它不会改变任何东西。

这是正在发生的事情的一个例子。

这是简单的公式 ROUND((A1-B1)/2,4)

对于一条记录,我的值 (.3159 - .3152) 计算为 0.0007,然后除以 2 得到 0.00035。

对于下一条记录,我的值 (.3554 - .3547) 也计算为 0.0007,除以 2 结果为 0.00035

因此,即使当我四舍五入到小数点后 4 位时,这两个值都是 0.00035,但我得到一个为 0.0003,另一个为 0.0004。相同的数字,四舍五入到相同的位数,两个不同的结果。我怎样才能解决这个问题?

标签: excelrounding

解决方案


这是浮点数固有的问题,无法解决,只能避免。

在 Excel 中尝试这些测试:

=(0,3159-0,3152)=(0,3554-0,3547)给你FALSE

=(0,3159-0,3152)-(0,3554-0,3547)给你类似的东西5.55112E-17

如果您不能接受差异,则应该在计算中间进行舍入,而不仅仅是在末尾:

=ROUND(0.3159-0.3152,4)=ROUND(0.3554-0.3547,4)TRUE

=ROUND(0.3159-0.3152,4)-ROUND(0.3554-0.3547,4)0

延伸阅读:浮点运算稳定吗?Binary floating point and .NET,由备受推崇的 Jon Skeet 撰写。


推荐阅读