2016-04-01 4 views
0

Я пытаюсь оценить следующее выражение:Оценка 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 (согласно Google)

Я использую .net 3.5 и ncalc 1.3.8

Я подозреваю, что количество кронштейнов не нравится, но я не могу найти упоминания о том, что это проблема em в любом месте ...

Спасибо!

ответ

1

Я не могу получить Ncalc или Ncalc-edge (v1.4.1), чтобы использовать оператор экспоненции ^ и произвести правильный результат. Например, «4^2» дает 6. Он не принимает ** в качестве оператора.

Немного исследования показывают, что он использует ^ в качестве оператора Xor в стиле C#. C# не имеет оператора экспоненции, поэтому вам придется разработать способ анализа вашей фактической строки ввода и использования Sqrt.

В настоящее время на дискуссионном форуме Ncalc есть такие вопросы, как Override^operator.

Смежные вопросы