2016-04-01 101 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,那是因爲我在做一些事情串事先要求沒有信件。

我用這簡單的代碼:

我使用.NET 3.5(根據谷歌)7336.46922305

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

正確答案是和ncalc 1.3.8

我懷疑它不喜歡那裏有括號的數量,但我找不到任何提及這是一個問題em any ...

謝謝!

回答

1

我無法獲得Ncalc或Ncalc-edge(v1.4.1)使用指數運算符^併產生正確的結果。例如,「4^2」給出了6.它不接受作爲運營商的**

一點點的調查顯示它使用^作爲Xor運算符,風格是C#。 C#沒有指數運算符,因此您必須設計一種解析實際輸入字符串的方法,並使用Sqrt

目前Ncalc論壇上有一些關於此的請求,如Override^operator