阻止 nCalc 使用 ToUInt16()?
Stop nCalc from using ToUInt16()?
我正在尝试在我的应用程序中使用 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:
在 NCalc 表达式中,^
是按位异或运算符,它接受两个无符号 16 位整数操作数。在您的表达式中,NCalc 尝试将 -.503937
转换为 UInt16 值,并且抛出 OverflowException
因为数字小于零。
如果要取幂,请改用 Pow
函数:
string evalstring = "Pow(-.503937, 2)";
我正在尝试在我的应用程序中使用 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:
在 NCalc 表达式中,^
是按位异或运算符,它接受两个无符号 16 位整数操作数。在您的表达式中,NCalc 尝试将 -.503937
转换为 UInt16 值,并且抛出 OverflowException
因为数字小于零。
如果要取幂,请改用 Pow
函数:
string evalstring = "Pow(-.503937, 2)";