Excel公式计算异常:x=4时返回-4E-15而非0的问题求助
Excel计算出现极小值而非0的问题解决
问题原因
- 这是浮点数精度误差导致的。Excel用二进制存储浮点数,0.1这类十进制小数没法被二进制精确表示,从3开始累加0.1到4要加10次,多次累加后A列显示的“4”其实是个略小于4的数值(比如3.999999999999999)。
- 代入公式
=($N$4-($N$2*A47))/$N$3计算时,$N$2*A47的结果会略小于20,最终差值除以2就得到了接近0的极小负数-4E-15,不是精确的0。 - 手动输入的4是精确值,所以计算正常;直接用数值公式时,Excel的计算引擎可能做了精度优化,结果也就正确了。
解决方法
可以用这几种方式消除误差:
- 用
ROUND函数修正精度:- 修正A列序列:把生成x值的公式改成
=ROUND(A1+0.1,1),确保x值精确到小数点后1位。 - 修正B列结果:把计算y值的公式改成
=ROUND(($N$4-($N$2*A47))/$N$3,1),直接把结果四舍五入到需要的精度。
- 修正A列序列:把生成x值的公式改成
- 用
IF函数强制把极小值转为0:
其中1E-10可以根据需求调整,只要计算结果的绝对值小于这个阈值,就返回0。=IF(ABS(($N$4-($N$2*A47))/$N$3)<1E-10,0,($N$4-($N$2*A47))/$N$3)
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

