已经针对 C++ 语言提出了这个问题,但我需要一个 VBA 函数。我尝试将 C++ 函数转换为 VBA,但它没有返回正确的值。
我需要一个执行以下操作的函数:
RoundUp(23.90, 5)
'return 25
RoundUp(23.90, 10)
'return 30
RoundUp(23.90, 20)
'return 40
RoundUp(23.90, 50)
'return 50
RoundUp(102.50, 5)
'return 105
RoundUp(102.50, 20)
'return 120
这是我到目前为止所拥有的。它在大多数情况下都有效,但对于小于倍数的小于 0.5 的数字返回不正确的值。所以问题似乎是我如何计算余数的舍入问题。
Public Function RoundUp(dblNumToRound As Double, lMultiple As Long) As Double
Dim rmndr As Long
rmndr = dblNumToRound Mod lMultiple
If rmndr = 0 Then
RoundUp = dblNumToRound
Else
RoundUp = Round(dblNumToRound) + lMultiple - rmndr
End If
End Function
例如:
RoundUp(49.50, 50)
'Returns 49.50 because rmndr = 0