查看完整版本: Excel四舍五入不再出错

xiadao_81 2009-12-16 16:21

Excel四舍五入不再出错

当我们在使用Excel电子表格制作数据报表时,为了避免大量小数的运算,常常会用到四舍五入的方法,但是这样做可能会造成数值运算的误差,而且不容易找到原因。
     如果对计算出的数值精度要求不高,可以在Excel菜单栏上点击“格式” -“单元格”,在“单元格格式”窗口中设置“小数位数”的数字(如图1),决定保留几位小数,超过的位数就会被舍掉。
[align=center][img]http://www.cbifamily.com/software/softoffice/h000/h12/img200801071101240.jpg[/img]
图1 在“单元格格式”窗口中设置“小数位数”的数字[/align]     但是,这样会产生一个问题。假设A的数值是34.52,四舍五入后是35;B是67.8,四舍五入后是68,按理说四舍五入后两数的相加值应该是103,可为什么Excel计算出的却是102呢?原来,这是因为数字相加时,Excel按照没有四舍五入前的数字进行运算,才会发生实际与计算出的数值有差异的情况。
     解决这个问题最简单的方法,就是在Excel菜单栏上单击“工具”-“选项”,在“重新计算”标签页中勾选“以显示精度为准”一项(如图2),然后点击“确定”按钮。此时,程序会弹出一个提示信息告诉你这样做会造成计算数值的误差,然后点击“确定”即可。
[align=center][img]http://www.cbifamily.com/software/softoffice/h000/h12/img200801071101341.jpg[/img]
图2 勾选“以显示精度为准”一项[/align]     如果你需要计算的资料是会计报表之类的信息,最好不要用这种方式处理。
     经过设置后,计算出的数值就变正确了,是不是很方便呢?

xiadao_81 2009-12-16 16:44

如果有人问你,Excel c2单元格中显示的数字是48,那么d2=c2×1.36的值是多少,你一定会脱口而出:65.28,其实不然。若48是你输入的,则“回答正确”;如果48是某个公式计算出来的结果,那么实际计算结果则可能是65.90。为了便于说明问题,还是从一个与工资计算有关的实例说起。

假设Excel工作表中有d2=356.68、e2=128.12,将d2与e2之和乘以0.1,将结果四舍五入取整,再将结果乘以1.36,取两位小数得到最终结果。

有人认为,可以事先选中f2单元格,使用“格式”选单下的“单元格”命令,将f2的小数位数设置为零。然后将(d2+e2)×0.1的结果放入f2单元格,即可四舍五入显示计算结果的整数部分。再将g2单元格的小数位数设成两位,最后把f2×1.36的结果存入其中就可以了。从表面上看,上述方法没有什么问题。在f2单元格的小数位数为零的条件下,(d2+e2)×0.1经四舍五入后的结果就是48。接下去却出了问题,因为f2×1.36的计算结果是65.90,根本不是48×1.36的正确结果65.28,其中65.90是(d2+e2)×0.1未经四舍五入直接乘以1.36的结果。

笔者经研究发现,在“单元格格式→数字”选项卡中设置的“小数位数”,只能将单元格数值的显示结果四舍五入,并不能对所存放的数值进行四舍五入。换句话说,数值的显示结果与单元格的“小数位数”设置有关,而显示结果和实际存放(即参与运算)的内容并不完全一致,如果不注意这个问题,计算工资等敏感数据就会出现错误。如上例中,f2单元格内的数值虽然显示为48,但实际存放的却是48.45,自然得出了48.45×1.36=65.90的结果(按计算要求应为65.28)。

要解决此问题,不能用设置“小数位数”的方法四舍五入。对本文所述的问题,只需在g2单元格内输入公式“=(round((d2+e2)×0.1,0))×1.36”,就可以按要求计算出正确结果65.28。式中的round函数按指定位数对“(d2+e2)×0.1”进行四舍五入,函数中的参数0将“(d2+e2)×0.1”四舍五入到最接近的整数。由于四舍五入是一种应用很广的运算规则,笔者将round函数的使用方法简单介绍如下:

round函数的语法为“round(number,num_digits)”,其中“number” 为需要四舍五入的数字或运算公式(其计算结果必须是数字)。num_digits指定四舍五入的位数,如果num_digits大于0,则四舍五入到指定的小数位,例如round(2.15,1)等于 2.2;如果num_digits等于0,则将数字四舍五入到整数,例如round(315.68,0)等于316;如果 num_digits 小于 0,则在小数点左侧的指定位数进行四舍五入,例如round(21.5,-1)等于20。

xiadao_81 2009-12-16 16:46

哎,今天被财务的造工资的事搞大了头,为了1毛钱的事,找了半天原因,原来是excel四舍五入的陷阱,所以贴上来,让大家遇到此问题不在头大!

fish 2009-12-16 17:13

::3) 所以嘛,做帐还是找些专门的行业软件吧,微软的东西,一般能用,专业的时候不顶用
页: [1]
查看完整版本: Excel四舍五入不再出错