我正在尝试评估以下表达式:
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
我怀疑它不喜欢括号的数量,但我找不到任何提及任何地方的问题......
谢谢!
答案 0 :(得分:1)
我无法使用ncalc或Ncalc-edge(v1.4.1)来使用指数运算符^
并生成正确的结果。例如," 4 ^ 2"给出6.它不接受**
作为运算符。
一些调查表明它使用^
作为Xor
运算符,采用C#的风格。 C#没有指数运算符,因此您必须设计一种解析实际输入字符串并使用Sqrt
的方法。
Ncalc讨论论坛目前有一些关于此问题的请求,例如Override ^ operator。