NCalc评估错了吗?

时间:2016-04-01 17:29:04

标签: vb.net math expression ncalc

我正在尝试评估以下表达式:

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(根据谷歌)

我正在使用.net 3.5和ncalc 1.3.8

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

谢谢!

1 个答案:

答案 0 :(得分:1)

我无法使用ncalc或Ncalc-edge(v1.4.1)来使用指数运算符^并生成正确的结果。例如," 4 ^ 2"给出6.它不接受**作为运算符。

一些调查表明它使用^作为Xor运算符,采用C#的风格。 C#没有指数运算符,因此您必须设计一种解析实际输入字符串并使用Sqrt的方法。

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