Больше и равно неверно оценивает - PullRequest
0 голосов
/ 21 декабря 2018

операция сравнения, оператор «> =» в цикле «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                    
...