Excelでの丸めについてよく読んだことがあります。Application.WorksheetFunction.Round() は多かれ少なかれ「通常の」丸めを使用しているのに対し、VBA の Round() 関数は「バンカーの丸め」を使用していることがわかりました。しかし、これは私がこれを理解するのに役立ちませんでした:
? Round(6.03499,2)
6.03
なんで?6.03 ではなく 6.04 を見たい! トリックはそれです
? Round(Round(6.03499,3),2)
6.04
少し考えて、次のようなサブルーチンを開発しました。
Option Explicit
Function DoRound(ByVal value As Double, Optional ByVal numdigits As Integer = 0) As Double
Dim i As Integer
Dim res As Double
res = value
For i = 10 To numdigits Step -1
res = Application.Round(res, i)
Next i
DoRound = res
End Function
それは正常に動作します。
? DoRound(6.03499,2)
6.04
しかし、それはクールではありません。Excelに組み込みの通常の丸めはありますか?