Dot-Net
Excel中銀行家的四捨五入公式
這是一個眾所周知的問題,預設情況下,.NET 使用 Banker 的四捨五入,
X.5即四捨五入到最接近的偶數。另一方面,Excel 使用算術四捨五入X.5,就像我們大多數人在學校學習過的一樣。是否可以使用公式在 Excel 中進行銀行家四捨五入?
使用這個公式:
=IF(AND(ISEVEN(A1*10^0),MOD(A1*10^0,1)<=0.5),ROUNDDOWN(A1,0),ROUND(A1,0))替換所有的
0,其中有 4 個,具有所需舍入的意義。或者你可以創建一個使用者定義的函式來使用 VBA Round,也就是 Banker’s Rounding:
Function BankerRound(rng As Double, sig As Integer) As Double BankerRound = Round(rng, sig) End Function那麼它只是:
=BankerRound(A1,0)
=IF(AND(ISEVEN(A1*10^0),MOD(A1*10^0,1)<=0.5),ROUNDDOWN(A1,0),ROUND(A1,0))我使用了這個公式,效果很好,但在某些情況下,它不起作用,因為 0.5 實際上是 0.5000000000000000004550000000000000000。
修復方法是將 MOD 語句四捨五入到小數點後兩 (2) 位,以便計算顯示為:
=IF(AND(ISEVEN(A1*10^0),ROUND(MOD(A1*10^0,1),2)<=0.5),ROUNDDOWN(A1,0),ROUND(A1,0))