операция сравнения, оператор «> =» в цикле «If Then» сначала корректно вычисляется сначала 2-3 раза, затем неправильно, а затем правильно в последнем цикле внешнего цикла For Next.Переменные, которые сравниваются, находятся в массиве и имеют правильные значения при пошаговой отладке цикла.Я сбит с толку, почему это происходит.
думал об изменении типа данных для переменной массива, но я думаю, что я должен использовать «вариант» для массивов Excel VBA.
'Calculate Deviance
S3 = 0
For i = 1 To N
S4 = 0
If A(i, 4) <= 0 Then
S3 = S3 + S4
S4 = 0
Else
E2 = A(i, 5) * X
If E2 < E1 Then
E2 = Exp(-E2)
S4 = A(i, 4) * Log(A(i, 4) / (A(i, 3) * (1 - E2)))
S3 = S3 + S4
S4 = 0
Else
E2 = 0
S4 = A(i, 4) * Log(A(i, 4) / (A(i, 3) * (1 - E2)))
S3 = S3 + S4
S4 = 0
End If
End If
If A(i, 4) >= A(i, 3) Then 'problem is right here. this statement.!
S3 = S3 + S4
Else
S4 = A(i, 3) - A(i, 4)
S4 = S4 * (Log(S4 / A(i, 3)) + A(i, 5) * X)
S3 = S3 + S4
End If
Next i
'Array input
' 1 2 3 4 5 6 7
'a(i,1) 0.25 0.25 0.5 0.5 1 1 1
'a(i,2) 1 0.1 0.01 0.001 0.001 0.0001 0.00001
'a(I,3) 10 10 8 10 12 12 12
'a(i,4) 10 10 8 5 7 2 0
'a(i,5) a(i,1)*a(i,2)
'N=7