我正在尝试将 Excel 工作表中的公式复制到 ASP 页面上,但是在复制公式后我得到了不同的结果(实际上是一个错误,因为 ASP 最终试图对负数求平方根)。
当然 Excel 处理运算符优先级与经典 ASP 相同吗?
我试图复制的公式是一个简单的“T 检验”(用于报告统计显着性 - 我没有创建公式)并且在 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,但仍然面临同样的事情。
这只是一个愚蠢的错误吗?有一次我一直在研究负数的平方根,直到我在 Excel 中尝试了 =SQRT(-9)
我正在使用的 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>"`