如何防止EXCEL中“四舍五入”造成的数据误差
摘要:在Excel中进行数值计算过程中,有时要求对参与计算的数值进行四舍五入,但在四舍五入的时候由于一些错误的设置会导致计算结果出现错误的情况。本文就针对这种情况介绍两种常用的解决办法。
关键词:Excel数值计算 四舍五入
在工作中我们会遇到数值小数位需要四舍五入的情况,特别是财务计算中常常遇到四舍五入的问题。很多人可能都有过这样的经历:在使用Excel处理、编辑各种数据报表过程中往往会在需要对数值进行四舍五入后,通过Excel计算出来的报表的结果与我们自己人工计算的结果不符下面我们就针对上述问题进行一个简单的分析。
在使用Excel处理数据的过程中很多人都会通过在“格式”菜单的“单元格格式”中来定义单元格中数值的小数位数。但是在实际应用过程中发现,通过上面的定义方式将数值进行了四舍五入后计算出来的结果与我们手工计算出来的结果出现误差。例如Excel工作表中有A1=15.66A2=13.69,将A1A2之和乘以12%,将结果“四舍五入”,保留两位小数,再将
结果乘以0.11,再“四舍五入”保留位小数,Excel的计算结果是“0.3874”,而我们手工计算的结果是“0.3872是什么原因造成Excel计算错误造成错误的根本原因是上面所采用的四舍五入的方法上,通过这种方式所进行的四舍五入数值本身并没有真正实现四舍五入,计算的时候Excel仍然以原值进行计算如果采用这种四舍五入的方法,在财务计算中常常会出现误差。我们设置表格的时候,在“单元格格式”窗口中设置的“小数位数”只能将单元格中的数值“显示内容”四舍五入,并不能对所存放的“数值”四舍五入。换句话说,显示内容和实际存放内容(参与算的内容)并非完全一致。因此,造成Excel计算结果与实际需求出现误差的原因是单元格数据的显示内容与参与计算内容的不一致性。
那么在实际应用中应该如何避免这种误差呢?这里介绍两种比较简单的方法:
一、对Excel进行设置来达到精确计算的目的
第一步:点击Excel菜单栏的“格式/单元格”,在弹出的“单元格格式”窗口的“分类”栏中选择“数值”然后在“小数位数”中设置实际需要保留的小数位数。(如图一)
(图一)
第二步:点击Excel菜单栏的“工具/选项”,在弹出的“选项”窗口中切换到“重新计算”选项卡,在“工作簿选项”栏中将“以显示值为准”复选框打上钩,点“确定”按钮即可解决问题(如
)。
(图二)
二、利用函数对小数进行精确的四舍五入
  在Excel中已经提供多种关于四舍五入的函数,首先介绍ROUND函数, Round函数的作
用是返回某个数字按指定位数取整后的数字,可以利用它返回某个数字按指定位数四舍五入后的数值。ROUND函数的语法为“ROUND(number,num_digits)”,其中Number是需要进行四舍五入的数字;Num_digits为指定的位数,按此位数进行四舍五入,如果 num_digits 大于 0,则四舍五入到指定的小数位,如果 num_digits 等于 0,则四舍五入到整数,如果 num_digits 小于 0,则在小数点左侧进行四舍五入。
例如:
        =ROUND(6.53, 1) 将 excel中round函数的使用方法6.53 四舍五入到一个小数位,结果为6.5
        =ROUND(6.6649,3) 将6.6649 四舍五入到一个小数位结果为6.665
        =ROUND(-1.123, 2) 将 -1.123 四舍五入到两小数位结果为-1.12
        =ROUND(45.67, -1) 将45.67 四舍五入到小数点左侧一位结果为46
=ROUND(51.5, 0) 将51.5 四舍五入成整数结果为52
这里的round函数实现的是按指定位数对数字进行四舍五入。如输入=round(3.158,2)则会出现数字3.16,即按两位小数进行四舍五入。例如在单元格B2中为初始数据1.23456B3的初始数据为2.34567,将要对它们进行四舍五入。在单元格C2中输入"=ROUND(B2,2)",在C3单元格中输入"=ROUND(B3,2)",两个单元小数点后保留两位有效数字,得到1.23、2.35。在单元格D2中输入"=ROUND(B2,4)",在D3单元格中输入"=ROUND(B3,4)"则小数点保留四位有效数字,得到1.2346、2.3457。
(图三)
对数字进行四舍五入除了ROUND函数外还有两个函数也可以实现去掉小数点后指定位数数字的功能。
1、rounddown函数:按指定位数舍去数字指定位数后面的小数。如输入=rounddown(3.158,2)则会出现数字3.15,将两位小数后的数字全部舍掉了;
2、roundup函数:按指定位数向上舍入指定位数后面的小数。如输入=roundup(3.158,2)则会出现数字3.16,将两位小数后的数字舍上去,除非其后为零。
Roundown和Roundup函数在计算过程中的是强制性的进行舍与入,计算结果仍然达不到实际应用的要求,因此不推荐使用!