0

我有一个要评估的公式“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

关于差异以及如何解决的任何想法?我知道我可以编写自己的小函数来拆分字符串并在循环中进行数学运算,但我只是先问了这个问题。

4

1 回答 1

1

我的想法是设置 result = 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

会修复它。

于 2016-09-22T02:56:24.010 回答