:4舍6入 5后面有数入上去 没有数 看它前位数单进双舍 ①保留 3 位有效数字 小数不过 一 位

问题描述:

:4舍6入 5后面有数入上去 没有数 看它前位数单进双舍 ①保留 3 位有效数字 小数不过 一 位

哈哈!1楼“血刃伤心q44”已经帮我回答了:
“①保留 3 位有效数字 小数不过 一 位”——不是矛盾了吗?
像0.18、1.56这不是保留3为有效数字?
若小数不过1位,就不是保留3为有效数字了.这应该就是你要的吧:
=IF(ISERROR(FIND(".",A1)),ROUND(A1,3-LEN(A1))-(MOD(A1*10^(4-LEN(A1)),20)=5)*10^(LEN(A1)-3),ROUND(A1,1)-(MOD(A1*100,20)=5)/10)

咦!你没仔细看我给你的公式吧?

看我的抓图,是不是跟上面的公式一样?

看到了。各种情况确实太多,试验时都没想到。

再加上一个条件IF()为:
=IF(ISERROR(FIND(".",A1)),ROUND(A1,3-LEN(A1))-(MOD(A1*10^(4-LEN(A1)),20)=5)*10^(LEN(A1)-3),IF(LEN(INT(A1))>2,(ROUND(INT(A1*10),3-LEN(INT(A1*10)))-(MOD(INT(A1*10)*10^(4-LEN(INT(A1*10))),20)=5)*10^(LEN(INT(A1*10))-3))/10,ROUND(A1,1)-(MOD(A1*100,20)=5)/10))

(公式有点累赘)

呵呵!你本来上面的抓图,454.5就要写成454.51、956.5也要写成956.51多啦。都说了,各种情况确实太多,试验时想都想不到。

就加一位数吧:

=IF(ISERROR(FIND(".",A1)),ROUND(A1,3-LEN(A1))-(MOD(A1*10^(4-LEN(A1)),20)=5)*10^(LEN(A1)-3),IF(LEN(INT(A1))>2,(ROUND(INT(A1*100),3-LEN(INT(A1*100)))-(MOD(INT(A1*100)*10^(4-LEN(INT(A1*100))),20)=5)*10^(LEN(INT(A1*100))-3))/100,ROUND(A1,1)-(MOD(A1*100,20)=5)/10))

呵呵!这是计算机浮点运算的问题,使小数取舍出现偏差。
我用=IF(MOD(A1*100,20)=5,1,2)检验一下,居然有的=1、有的=2?
修改为:
=IF(ISERROR(FIND(".",A1)),ROUND(A1,3-LEN(A1))-(MOD(A1*10^(4-LEN(A1)),20)=5)*10^(LEN(A1)-3),IF(LEN(INT(A1))>2,(ROUND(INT(A1*100),3-LEN(INT(A1*100)))-(MOD(INT(A1*100)*10^(4-LEN(INT(A1*100))),20)=5)*10^(LEN(INT(A1*100))-3))/100,ROUND(A1,1)-(MOD(A1*10,2)=0.5)/10))
这下应该可以了吧?

话外,你这问题也很缠人哦。也不给点赏分补偿补偿?嘻嘻!