阻止nCalc使用ToUInt16()?

时间:2016-07-23 19:05:30

标签: c# ncalc

我正在尝试在我的应用程序中使用nCalc,但是因为出于某种原因想要转换为UInt16并导致错误而遇到问题。

string evalstring = "-.503937 ^ 2";
Expression e = new Expression(evalstring);

this.Value = Convert.ToDouble(e.Evaluate());

这引发;

System.OverflowException occurred
  HResult=-2146233066
  Message=Value was either too large or too small for a UInt16.
  Source=mscorlib
  StackTrace:
       at System.Convert.ToUInt16(Int32 value)
  InnerException: 

1 个答案:

答案 0 :(得分:2)

在NCalc表达式中,^是按位XOR运算符,它接受两个无符号的16位整数操作数。在您的表达式中,NCalc尝试将-.503937转换为UInt16值,并抛出OverflowException,因为该数字小于零。

如果要取幂,请改用Pow函数:

string evalstring = "Pow(-.503937, 2)";