数値を丸めるにはRound関数を使います。
しかし、この関数は数値によっては四捨五入してくれません。独自の丸めルールを持つようです。
一般的にはBanker's Roundと呼ばれる方式らしいのですが詳しくは知りません。
そこでちゃんと四捨五入する関数を作ってみました。
以下の関数がそれです。
■ソース
Function RoundEx( _
numExpr As Double, _ '入力値
place As Integer _ '丸め位置(負数=整数部で四捨五入する桁/正数=小数点以下桁数)
)As Double
Dim wVal As Double
Dim llwk As Long
Dim lsFormat As String
If place<=0 Then
llwk = 10^Abs(place)
wVal = numExpr / llwk
wVal = Cdbl( Format(wVal, "#0") ) * llwk
Elseif place>0 Then
lsFormat = "0." & String$( place, "0" )
wVal = Cdbl( Format(numExpr,lsFormat) )
End If
RoundEx = wVal
End Function
■実行例
RoundEx( 0.55, 0) → 1
RoundEx( 0.45, 0) → 0
RoundEx( 0.55, 1) → 0.6
RoundEx( 0.54, 1) → 0.5
RoundEx( 0.55, 2) → 0.55
RoundEx( 105.5, -1 ) → 110
RoundEx( 104.5, -1 ) → 100
RoundEx( 155.5, -2 ) → 200
RoundEx( 145.5, -2 ) → 100
■確認済み環境
・NotesR5(R5.0.11)
・Notes6.5(R6.5.4)
[1回]
PR
COMMENT