我有一个公式要评估“6 * 6 * 6 * 6 * 6 * 6 * 5 * 6 * 6 * 6 * 5 * 6 * 5”Ncalc返回= -1031662592答案应该是(我期待是)= 7558272000
代码非常简单
Function StraightEval(Formula As String)
Try
Dim X As New Expression(Formula)
Dim result = X.Evaluate
Return result
Catch ex As Exception
MessageBox.Show(ex.Message)
Return "Error " & ex.Message
End Try
End Function
有关差异以及如何解决问题的任何想法?我知道我可以编写自己的小函数来分割字符串并在循环中进行数学运算但我只是先问问题。
答案 0 :(得分:1)
我的想法是设置结果= 6 * 6 * 6 * 6 * 6 * 6 * 5 * 6 * 6 * 6 * 5 * 6 * 5导致其限制溢出2,147,483,647,因为它似乎默认为整数,结果被解释为负数。
我相信
Function StraightEval(Formula As String)
Try
Dim X As New Expression(Formula)
Dim result as Long = X.Evaluate
Return result
Catch ex As Exception
MessageBox.Show(ex.Message)
Return "Error " & ex.Message
End Try
End Function
会解决它。