2010-07-08 107 views
1

我很難解釋這一個。以下函數被用作工作表公式。 「空」的值僅僅意味着單元格是空的,因此沒有價值。給定值{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 

回答

4

該錯誤是floating point accuracy problems的結果。即使你的前兩個值是0和0,它仍然會有相同的結果。所以將{0.1,0.2,0.3,0.4}。

在返回並調用它之前,將其舍入到一些合理的小數位數。