VB在进行计算时没有返回与MS Excel相同的值?

时间:2012-11-30 19:43:25

标签: vb.net excel

我正在根据数据库返回的值对VB进行一些计算,我将这些值与我在MS Excel上得到的结果进行了比较,看起来有些偏差。我也知道所有数据都是从数据库中成功读取的。我想知道它是否与我正在使用的数据类型有关?我尝试了双倍和小数,但仍然没有运气。每个数组中有24个值。我的公式是:

Σ[(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

例如:if:

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 个答案:

答案 0 :(得分:1)

对于您提供的示例值,VB值9.1245似乎是正确的。我试过excel并得到结果为9.12452077。

检查您的Excel电子表格公式.. enter image description here

  • 在第5行,对于A列到X列,我使用公式= ABS(((A2-A1)/ A1)* 100)
  • 在Z5中,= SUM(A5:X5)/ 24正在使用