Excel 中MOD()出错的问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 11:50:19
我新建了一个工作表,在a1中输入"=int(mod(230,10))"结果为0,但在a2中输入"=int(mod(2.3*100,10))"结果却为-1,这是不是excel的错误呀?我用的EXCEL2003版,WINDOWSXPSP2系统

这是正常的。
EXCEL采用的是浮点运算,而浮点运算会产生一个很小的尾数。
230除10的余数当然为0了,但2.3*100就有可能产生尾数,所以再除以10就会余那个尾数了。
如果将2.3*100先取整再求余,结果还是0。如=INT(MOD(ROUND(2.3*100,0),10))

我把你的公式复制到Excel中试了一下,果然如你所说。但我的解释是:这是Excel的数值表达和运算精度问题,第一个公式中,230和10都是整型,所以求mod没有有问题,但第二个公式中,2.3*100,Excel在运算时先会所100转换为双精度形来计算,这就会有一个误差(低精度向高精度置换的误差)。运算结果也是一个双精度型,并不是一个整数,最后MOD运算的结果是 -2.8421709430404E-14这样一个数,在单元格中取整后显示为-1