2012-11-30 15 views
0

我正在做一些計算VB的基礎上從數據庫返回的值,我已經將這些值與我已經在MS Excel中得到的結果進行比較,他們似乎有點關閉。我也知道所有數據正在從數據庫中成功讀取。我想知道它是否可以與我使用的數據類型有關?我已經嘗試了雙精度和小數,但仍然沒有運氣。每個數組中有24個值。我的公式是:在進行計算時,VB不會返回與MS Excel相同的值?

Σ[(forecast-historic)/historic*100]/24 

這是我的代碼,所有的變量都通過的方式雙打:

Public Function Evaluate(ByVal historic() As Double, ByVal forecast() As Double) As Double 
    For z As Integer = 0 To 23 
     hourly(z) = ((forecast(z) - historic(z))/historic(z)) * 100 
     daily+= Math.Abs(hourly(z)) 
    Next 
    effectiveness= daily/24 
    Return effectiveness 
End Function 

例如,如果:

historic() = {16,18,15,16,14,14,15,16,17,20,22,25,27,27,27,27,26,24,23,22,19,18,16,16} 
forecast() = {17,17,16,16,16,16,16,15,15,18,21,24,26,27,29,29,28,28,26,24,22,21,19,18} 

在MS Excel中的結果是8.47643而在VB上它是9.1245。

我已經檢查了值1的1,並且他們不同,因爲第一次操作時,我將值發送到小時。

有關如何使這更準確的任何建議?謝謝。

+1

你可以發佈你在Excel中做什麼嗎?該公式給出了與VB(9.1245)完全相同的結果:{= SUM(ABS((forecast-historic)/ historic * 100))/ 24} – Govert

+0

感謝您的評論,它現在正在工作。 – user1676874

+0

您可能想要結束這個問題 - 對其他人不太可能有用。 – Govert

回答

1

對於您提供的示例值,VB值9.1245似乎是正確的。我在excel中試了一下,結果爲9.12452077。

檢查Excel電子表格公式.. enter image description here

  • 在5行,列A到X,用式I = ABS(((A2-A1)/ A1)×100)
  • 在Z5中,= SUM(A5:X5)/ 24被使用
+0

哦,你知道些什麼,似乎現在工作,感謝您的意見! – user1676874