例69 解决浮点运算造成的ROUND函数计算不准确的问题
(书中第62~63页)
在使用ROUND函数保留指定的小数位进行四舍五入时,出现了不能进行自动舍入的问题。如图4-28所示。B列显示的是不使用ROUND函数的结果,C列中显示的是使用ROUND函数保留两位小数的结果,B列中值的第3位小数都为5,而使用ROUND函数保留两位小数时,并未向前进位。
这个错误来源于浮点运算的错误,在Excel2003,Excel2007中都存在这种情况。
选中C2单元格,在编辑栏中输入公式:=ROUND((A2-2000)*0.05,2)。如图

按F9功能键进行计算,A2-2000的结果不是等于49.7,而是:=ROUND(49.699999999998*0.05,2)。
所以才会出现如上面所描述的情况。
解决办法通常是再使用一次ROUND():
选中C2单元格,在编辑栏中输入公式:=ROUND(ROUND((A2-2000),1)*0.05,2)。
按回车键,即可返回正确结果,如图4-29所示。

网友评论