excel关于mod和if函数的问题?

1行是结果,2行是对应的公式。通过mod函数计算C1单元格等于5,到了D1单元格通过if公式一计算就出现了错误值0。而在C1单元格 我如果手动输入5,后面D1就会算出正确值也是我想得到的0.1是mod和if在取值方面有什么说法吗?大神救我

将C1改为数字格式,增加小数位数至13位时可以看到出现了1,也就是说刚开始看到C1是5,并不是整数5,所以判断条件C1=5就是false了。如果A列都是这种2位小数的,不考虑其他情况的话,可以将C1单元格公式改为=INT(MOD(B1,20)),即取整,解决问题。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-04-04
这是excel以二进制格式存储的浮点数造成的精度问题,例如,在本例中,如果复制C1,然后以数字格式粘贴到另外单元格,得到的结果不是5,而是5.00000000000011,这就造成了D1中的IF判断语句判断的结果不是0.1。
解决的办法,可以用INT函数和ROUND函数,如将D1中的公式改为=IF(INT(C1)=5,0.1,0)或=IF(ROUND(C1,0)=5,0.1,0)本回答被提问者采纳
第2个回答  2023-04-04
和我猜测的一样,计算精度问题。
=MOD(8.05*100,20)
在计算后,把小数位往后拉,会出现结果为
5.000000000000110000...
这个数不等于5
计算机存储数据是2进制,8.05转换为2进制是一个无限小数,存储位是有限的就会截断,再进行计算就会出现误差
相似回答