Excel VBA双添加错误
问题描述:
我很难解释这一个。以下函数被用作工作表公式。 “空”的值仅仅意味着单元格是空的,因此没有价值。给定值{empty,empty,0.8,0.2},下面的函数是,有时返回像5.55111512312578E-17这样的值。在调试器中,它看起来像一切都是正确的,直到ParamArray中的最后一个值(在本例中为0.2)被处理。有什么想法吗?Excel VBA双添加错误
Private Function getOvertimeEP(ParamArray epAllocations() As Variant)
Dim overtimeEP As Double
overtimeEP = -1
For Each nextVal In epAllocations
overtimeEP = overtimeEP + nextVal
Next
If overtimeEP < 0 Then
overtimeEP = 0
End If
getOvertimeEP = overtimeEP
End Function
答
该错误是floating point accuracy problems的结果。即使你的前两个值是0和0,它仍然会有相同的结果。所以将{0.1,0.2,0.3,0.4}。
在返回并调用它之前,将其舍入到一些合理的小数位数。