Round为什么会产生一个不同的结果比Application.Round
我发现VBA回合函数返回错误的结果。 我发现一个工作的替代方法是使用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
对于如何四舍五入没有完全正确的答案。 差异与如何处理完全落在中点的价值观有关。 在这种情况下, Application.Round
将总是四舍五入。 例如0.5将舍入到1.0。 VBA.Round将打破最接近的偶数
1.5-->2 2.5-->2 3.5-->4
等等。 这是减less总是四舍五入的固有偏见的几种方法之一。
此外,如果有兴趣, 这个维基百科文章中有一个相当广泛的四舍五入讨论