我已经阅读了很多关于在 Excel 中舍入的内容。我发现 VBA 的 Round() 函数使用“银行家舍入”,而 Application.WorksheetFunction.Round() 或多或少使用“正常”舍入。但这并没有帮助我理解这一点:
? Round(6.03499,2)
6.03
为什么?我想看 6.04,而不是 6.03!诀窍是
? 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中是否有任何内置的正常舍入?