为什么Round产生的结果与Application.Round不同

时间:2016-04-20 20:52:08

标签: excel vba excel-vba

我发现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

1 个答案:

答案 0 :(得分:1)

如何回合没有完全正确的答案。这些差异与如何处理恰好落在中点的值有关。 Application.Round将始终在该实例中汇总。例如0.5将舍入到1.0。 VBA.Round将中断与最接近的偶数

相关联
1.5-->2   
2.5-->2  
3.5-->4  

等等。这是减少总是四舍五入的固有偏见的几种方法之一。

另外,如果有兴趣,可以在this Wikipedia article

中对Rounding进行相当广泛的讨论