NCalc 评估错误?

NCalc evaluation is wrong?

我正在尝试计算以下表达式:

7088.800/(((((((24.65995+24.43061+24.54517+24.65192)/4)-32.0)*5/9)+273.15)/288.15)^.5)

如果您问自己为什么我不使用 Sqrt() 而不是 ^0.5,那是因为我事先对字符串做了一些要求没有字母的事情。

我正在使用这个简单的代码:

Expression.CacheEnabled = False
x = New Expression(xEquation)
y = New Expression(yEquation)
System.Diagnostics.Debug.Write(x.Error)
System.Diagnostics.Debug.Write(y.Error)
Return New PointF(x.Evaluate, y.Evaluate)

我得到的答案是:7088.800

正确答案是:7336.46922305(根据google)

我正在使用 .net 3.5 和 ncalc 1.3.8

我怀疑它不喜欢括号的数量,但我找不到任何地方提到这是一个问题...

谢谢!

我无法让 Ncalc 或 Ncalc-edge (v1.4.1) 使用求幂运算符 ^ 并产生正确的结果。例如,“4 ^ 2”给出 6。它不接受 ** 作为运算符。

一点调查显示它使用 ^ 作为 Xor 运算符,采用 C# 风格。 C# 没有求幂运算符,因此您必须设计一种方法来解析您的实际输入字符串并使用 Sqrt.

目前 Ncalc 论坛上有一些关于此的请求,例如 Override ^ operator