Excel 神奇公式计算结果总是让人意外
本帖最后由 华英怡梦 于 2020-12-30 18:10 编辑好奇的同学可以试着用Excel验算一下这个充满神奇的公式:
=IF(41/5-8=0.2,"OK","NO")
是不是跟你预算的结果有点不一样呢?
有兴趣的同学可以接着试:
=IF(MOD(ROW()/5,1)=0.2,"OK",ROW()/5)
41行之前每当单元格行数/5余1时,你会看到OK,到41行以后你就看不到OK了。
所以只要被除数>=41,答案的小数部分等于0.2,但系统认为不是0.2
有兴趣的同学可以接着试:
=IF(MOD(ROW()/5,1)=0.2,"OK",ROW()/5)
41行之前每当单元格行数/5余1时,你会看到OK,到41行以后你就看不到OK了。
所以只要被除数>=41,答案的小数部分等于0.2,但系统认为不是0.2 =IF(41/5-8=0.2,"OK","NO")
为什么返回的是NO??? 因为浮点数的原因,计算机并不能完整的储存小数,计算机中的小数都是有精度的。
如图:
这也警示我们两点:
1.处理浮点数时要小心,特别是金融数据。
2.浮点数不宜用于条件判断。
suxaioxiann 发表于 2021-1-3 23:07 https://www.pcbeta.com/static/image/common/back.gif
因为浮点数的原因,计算机并不能完整的储存小数,计算机中的小数都是有精度的。
如图:
这个分析很到位,当时我发现这个问题时就很奇怪,为什么1/5=0.1999999999,而不是=0.2?
页:
[1]