|
本帖最后由 kuaile8513 于 2017-10-22 19:50 编辑
修约值8.005,修约到小数点两位,为什么不是8,而是8,01.(四舍六入五单双修约)详见附件。
A2为修约值(8.005) , B2为修约位数(2)。 公式:=IF(MOD(A2*10^(B2+1),20)=5,ROUNDDOWN(A2,B2),ROUND(A2,B2)),此式却返回8.01。
MOD(A2*10^(B2+1),20)返回的是5,则应是:ROUNDDOWN(A2,B2)=8,为什么会是ROUND(A2,B2))=8.01呢? 如果A2为9.005,则公式正确返回9.求助大神看一看,问题出在哪里?不胜感激。
=IF(ABS(MOD(A2*10^(B2+1),20)-5)<0.00000001,ROUNDDOWN(A2,B2),ROUND(A2,B2))
这样吧,余数与5的差的绝对值与0.000000001之类的比较,就避免了浮点问题。
|
|