我发现VBA Round函数返回错误的结果。我发现了一种可行的替代方法,即改为使用Application.Round
。
为什么VBA Round
功能不能按预期工作?
Sub roundingResults()
Range("A1") = 123456.705
Debug.Print "Approach #1 " & Round(Range("A1").Value, 2)
Debug.Print "Approach #2 " & Application.Round(Range("A1").Value, 2)
End Sub
输出
Approach #1 123456.7
Approach #2 123456.71
答案 0 :(得分:1)
如何回合没有完全正确的答案。这些差异与如何处理恰好落在中点的值有关。 Application.Round
将始终在该实例中汇总。例如0.5将舍入到1.0。 VBA.Round将中断与最接近的偶数
1.5-->2
2.5-->2
3.5-->4
等等。这是减少总是四舍五入的固有偏见的几种方法之一。
另外,如果有兴趣,可以在this Wikipedia article
中对Rounding进行相当广泛的讨论