作者:乔山办公网日期:
返回目录:excel表格制作
=IF(MOD(INT(A1*1000),5)=0,IF(MOD(INT(A1*100),2)=0,INT(A1*100)/100,ROUND(A1,2)),ROUND(A1,2))
几位想得太复杂了百,这样就可以了。
思路:首先,原数乘1000后取整数部分,用MOD判断其能否被5整除,将小数度后知第三位是5的另外列出来(当然是0的也被挑出来了。
接着(1)若不能,正常四舍五入即道可。
(2)若能,则表示小数后第三位是0或回5,这时我们判断原数乘100后取整能不能被2整除(这是判断小数点第二位是奇数还是偶数),若能,原数乘100后取整再除以100(这不就是答取小数点后两位吗?),若不能,那么直接用ROUND函数。
假设百A1是通过多位小度数的数值(这里知4位以上),按四舍六入道五成双内保留二位小数。公容式为:
=IF(MID(A1-INT(A1),5,1)*1>5,INT(A1)+MID(A1-INT(A1),1,4)+0.01,IF(MID(A1-INT(A1),5,1)*1<5,INT(A1)+MID(A1-INT(A1),1,4),IF(MID(A1-INT(A1),6,1)*1>0,INT(A1)+MID(A1-INT(A1),1,4)+0.01,IF(ISEVEN(MID(A1-INT(A1),4,1)*1),INT(A1)+MID(A1-INT(A1),1,4),INT(A1)+MID(A1-INT(A1),1,4)+0.01))))
最佳解答理论上copy公式是这样:1.保留到个位=IF(A1-INT(A1)0.5,ROUND(A1,0),IF(MOD(INT(A1),2)=0,INT(A1),ROUND(A1,0)))2.保留一位小数=IF(A2*10-INT(A2*10)0.5,ROUND(A2*10,0),IF(MOD(INT(A2*10),2)=0,INT(A2*10),ROUND(A2*10,0)))/103.保留两位百小数=IF(A3*100-INT(A3*100)0.5,ROUND(A3*100,0),IF(MOD(INT(A3*100),2)=0,INT(A3*100),ROUND(A3*100,0)))/100依度此类推,但还是要注意验算,因为计算机芯片的浮点运算知问题或是EXCEL的运算问题,会造成“道五成双”计算错误。
从网上收来的,试过不错。
' “四舍六入五单双”自定义函数
' 函数形式 Round5(x,mm),返回值Round5为 Double 型
' X为操作数值,mm为保留小数位e799bee5baa6e997aee7ad94e58685e5aeb9361数
' mm为 Integer 型,mm = 0 表示取整数
Public Function round5(X As Double, mm As Integer) As Double
Dim Temp1, Temp2 As String
Temp1 = 1
If mm < 0 Then
Temp1 = 10 ^ Abs(mm)
X = X / Temp1
mm = 0
End If
If ((Int((Abs(X) - Int(Abs(X))) * 10 ^ mm) Mod 2) = 0 And (Abs(X) * 10 ^ mm - Int(Abs(X) * 10 ^ mm)) <= 0.5) And X <> Val(Round(Abs(X), mm) * Sgn(X)) Then
round5 = Val((Round(Abs(X) - 10 ^ (-mm) / 5, mm)))
Else
round5 = Val(Round(Abs(X), mm))
End If
round5 = Val(round5 * Sgn(X) * Temp1)
End Function