1. 方法 1 : 使用 ScriptControl 調用 VBScript 進行計
方法 2 : 使用 XPathNavigator.Evaluate 進行計算 (MSDM 物件說明)
[C#]計算以字串表示的數學運算式結果
2. 使用CodeCompiler動態建置程式碼 => CodeDomProvider 類別
3. NCalc: 處理數學運算的好幫手
NCalc 簡介
NCalc 由 Evaluant 公司的研發團隊開發,是在 .NET Framework 中處理運算式字串(expression string)並回傳結果的一種工具類別庫,它支援數種數學運算、邏輯運算以及自訂函數運算的功能,例如這樣的程式碼:
[C#]
- Expression e = new Expression("2 + 3 * 5");
- Debug.Assert(17 == e.Evaluate());
下載點 :
NCalc - Mathematical Expressions Evaluator for .NET
DOWNLOADS
application, 62K, uploaded Sep 21 2011 - 2262 downloads
source code, 85K, uploaded Sep 21 2011 - 2068 downloads
-
使用 NCalc
要在專案中使用 NCalc,只需要在專案中加入對 NCalc.dll 檔案(由 Codeplex 網站下載)的參考,並在程式碼中使用 NCalc 命名空間(using NCalc;)即可。NCalc 的運算式是以 Expression 類別為主,可以接受傳入邏輯運算式(Logic Expression)物件以及字串,並可以設定 NCalc 的運算式評估選項。選項決定 NCalc 的處理行為,像是不設定(None)、不分大小寫(IgnoreCases)、不快取運算式(NoCache)以及迭代參數處理(IternateParameters)等等。
NCalc 支援下列幾種算符(operator):
類型 算符 說明 Logical or, ||
and, &&
邏輯運算算符。 Relational =, ==, !=, <>
<, <=, >, >=
條件比對算符。 Additive +, - 加法算符。 Multiplicative *, /, % 乘法算符。 Bitwise &, |, ^, >>, <<
位元運算與移動算符。 Unary !, not, ~, - 否定算符。 Primary (, ), values 括號與一般數值算符。
以及下列數值類型:
類型 說明 integer 整數型別。 floating point number
浮點數型別。 scientific notation
科學記號型數值型別(如 1e+100)。 Dates and Times
日期與時間型別,若要使用此型別,則要用 "#" 標記,例如 #2009/12/4# Booleans
布林值,true/false Strings
字串值。 Functions
函數,內建有 20 種數學函數(都是 Math 類別中提供的函數,但部份 Math 類別支援的,NCalc 未支援),以及兩種特別函數(in 和 if),可參考http://ncalc.codeplex.com/wikipage?title=functions 取得支援的函數清單。 Parameters
參數,在運算式字串中要用 "[" "]" 包起來,然後以 Expression.Parameters 來設定其值,例如 2+5+[pi],[pi] 即為參數。
資料來源:
1. http://www.dotblogs.com.tw/chou/archive/2010/12/03/19881.aspx
2. http://msdn.microsoft.com/zh-tw/ee854988.aspx
3. http://www.dotblogs.com.tw/kim/archive/2010/07/21/codecompiler.aspx
沒有留言:
張貼留言