Excel VBA方法ROUND不正确

Public Function foo() Dim x As Double, y As Double, z As Double x = 1.26 y = 3.175 z = Round(x + y, 2) foo = z End Function 

在Windows 7上运行Excel 2007.这个函数返回4.43到一个单元格= foo()这是烦人的,因为我想4.44。 我发现一些文件声称VBA ROUND使用甚至四舍五入,但这里最后一位数字是奇数。 这里有什么问题?

您始终可以使用工作表舍入函数而不是VBA的内置函数

 Public Function foo2() Dim x As Double, y As Double, z As Double x = 1.26 y = 3.175 z = Application.WorksheetFunction.Round(x + y, 2) foo2 = z End Function 

foo2将导致4.44 (在我的机器上testing)。 我不知道这是否会影响性能。

您将需要使用十进制types来完成这个使用基于整数的算术,而不是基于浮点的。

Excel没有一个原生的数据types,所以你必须使用Variant ,然后使用CDec函数转换成小数。

 Public Function foo() Dim x As Variant, y As Variant, z As Variant x = CDec(1.26) y = CDec(3.175) z = Round(x + y, 2) foo = z End Function