thearchyhigh 发表于 2015-10-15 17:56:20

EXCEL四舍五入时的一个漏洞分享,以避免数据处理错误。

本帖最后由 thearchyhigh 于 2015-10-15 18:01 编辑

    在用EXCEL计算误差时,发现四舍五入与手算不一致,提醒各位注意一下。示例如下:标准源输出40,被校仪器示值40.01,用EXCEL计算相对误差保留3个小数位数时为0.025%,但保留2位时为0.02%。


hblgs2004 发表于 2015-10-16 08:24:46

你给出的数据没错呀,符合奇变偶不变规则,漏洞在哪儿?

菩提树 发表于 2015-10-16 08:55:26

四舍五入出现问题,实际是EXCEL换算机制的问题,十进制转换成二进制进行计算,计算完再转换为十进制,运算过程保留位数问题,最终导致计算结果不是正好是0.025,你将小数位数保留十五位,就会出现我上传图中的数值,最后四舍五入就出现你这结果了 。可以用ROUND函数取整后计算,楼主的这种计算误差的情况,基本不会出现问题,实际可以用excel函数实现四舍六入的。

thearchyhigh 发表于 2015-10-17 08:29:46

菩提树 发表于 2015-10-16 08:55
四舍五入出现问题,实际是EXCEL换算机制的问题,十进制转换成二进制进行计算,计算完再转换为十进制,运算 ...

恩。乘上一定倍数转成整数再算是可以的,但必竟使用中小数位不清楚,再加上此种情况极少,没必要为这了个去随时设置公式,大家知道避免一下就好。至于ROUND也是4舍5入,和EXCEL上面手动调小数位数一样的,不能避免此问题。

thearchyhigh 发表于 2015-10-17 08:31:09

hblgs2004 发表于 2015-10-16 08:24
你给出的数据没错呀,符合奇变偶不变规则,漏洞在哪儿?

EXCEL的四舍五入是不会奇变偶的,此计算是特例。你可以用40和40.1去算就为是0.3%而不是0.2%了

gl98 发表于 2015-10-17 09:03:29

execl没有错,和你的保留位数有关系,另外execl没有四舍六入五成双的功能,如需要使用要自定义函数来实现。

thearchyhigh 发表于 2015-10-17 10:01:17

gl98 发表于 2015-10-17 09:03
execl没有错,和你的保留位数有关系,另外execl没有四舍六入五成双的功能,如需要使用要自定义函数来实现。 ...

该示例40及40.01两个数据后面全是零,你可以自己试下。该漏洞的原因3楼已经解释清楚了。

步云风 发表于 2025-6-24 08:08:03

没看懂,问题没解决
页: [1]
查看完整版本: EXCEL四舍五入时的一个漏洞分享,以避免数据处理错误。