Я пытаюсь воспроизвести формулу из рабочего листа Excel на страницу ASP, но, скопировав формулу, я получаю другие результаты (фактически ошибка, потому что ASP в конечном итоге пытается извлечь квадратный корень из отрицательного числа).
Конечно, Excel обрабатывает приоритет операторов так же, как классический ASP?
Формула, которую я пытаюсь воспроизвести, представляет собой простой «Т-тест» (для отчета о статистической значимости — я не создавал формулу) и правильно работает в Excel. В Excel ячейки выглядят так
A2 = 1098
B2 = 183
A4 = 20.4
B4 = 17.49
А ячейка E4 содержит эту формулу:
=(A4-B4)/SQRT(((($A$2*A4)+($B$2*B4))/($A$2+$B$2))*
(1-((($A$2*A4)+($B$2*B4))/($A$2+$B$2)))*((1/$A$2)+(1/$B$2)))
Итак, я просто скопировал/вставил эту формулу в классический ASP, удалил все $ и заменил SQRT на SQR, объявил 4 переменные A2, B2, A4, B4. Это возвращает ошибку (недопустимый вызов процедуры).
Если я удалю первую часть формулы — (A4-B4)/SQRT — в ASP код вернет -2,41868099141296, а в Excel — 0,001019435.
Я пробовал и пытался сначала вычислить части формулы по отдельности, а затем собрать их вместе, готовые выполнить SQRT, но продолжаю сталкиваться с одним и тем же.
Это просто глупая ошибка? В какой-то момент я искал квадратные корни из отрицательных чисел, пока не попробовал =SQRT(-9) в Excel
Я использую код ASP (я вставил разрыв строки в первую и последнюю строку):
A2 = cdbl(1098.0)
A4 = cdbl(20.4)
B2 = cdbl(183.0)
B4 =cdbl(17.49)
' Remove all the $, and (A4-B4)/SQRT part
response.write "<p>Result: " & ((((A2*A4)+(B2*B4))/(A2+B2))*(1-(((A2*A4)+(B2*B4))
/(A2+B2)))*((1/A2)+(1/B2))) & "</p>"`