Ncalc公式评估意外结果

时间:2016-09-21 23:30:11

标签: vb.net ncalc

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

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

1 个答案:

答案 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

会解决它。