我有一个要计算的公式“6*6*6*6*6*5*6*6*6*5*6*5*6*6*5*6*5”Ncalc return= -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对于这种差异以及如何修复它有什么想法吗?我知道我可以编写自己的小函数来拆分字符串,并在循环中进行数学运算,但我只是先问问题。
发布于 2016-09-22 10:56:24
我的想法是设置result =6*6*6*6*6*6*5*6*6*6*5*6*6*6*5*6*5*5*5*5*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会解决它的。
https://stackoverflow.com/questions/39628029
复制相似问题