EXCEL 2007 加法问题

来源:百度知道 编辑:UC知道 时间:2024/06/27 14:22:58
EXCEL中,3个单元格A1,A2,A3相加。其中A1为负小数,A2,A3为正小数。A2+A3=A1。
将三个单元格求和。如果加法顺序为SUM(A1,A2,A3)则结果不为0(需要将结果用科学计数法的格式展现),SUM(A3,A2,A1)则结果正常(也同样用科学计数法格式展现)
请教大家原因是什么,该怎么办才能正确运算,因为在大量数据计算中,不确定第一个加数为正还是负。
经测试,只有为负的小数做第一个加数的时候才有问题。
用ABS依然无效,计算对精度要求非常高。目前试出一个很笨的办法,首先乘以一个极大数例如100000000,转换为整数,然后相加,将相加后的结果再除以这个极大数100000000。可以避免由于负小数浮点数加法,第一个数为负小数的问题
例如三个数:-5.05,5.04,0.01 。很奇怪的结果。
但是用-1.5,0.8,0.7这三个数又是正常的。
很诡异
如果大家不明白用科学计算法什么意思。那就用个简单的办法
用公式 1/(A1+A2+A3) 结果不是0
用公式 1/(A3+A2+A1) 结果为#DIV/0!除0错误,是我们希望得到的结果

电脑中的数字,最后是以2进制保存的。所以一个十进制的数字,在保存为二进制的时候可能会有一个小小的存储误差,如果你说的这3个数中有任何一个存在存储的误差,将会导致最后相加不是0,而是一个距离0很近的一个小小的数,也就是你说的用科学计数法显示的那个数,因为太小了,所以只能以科学计数法显示。
不知道你的计算对精度要求如何,所以解决的办法还需要看你的需要斟酌。

---------------------
其实你的所谓“笨办法”就是最正确最朴素的解决方法啊,其实很多编程语言的高精度数据类型就是你这个思路实现的。估计不会有比你这个苯办法更好的办法了。

=ABS(SUM(A1:A3))
使用ABS绝对值!

我的2003是显示0的。