在這邊跟大家分享一個自己寫的一個簡單程式庫,已放上gitHub
https://github.com/kuanHungWang/MathParser
是以Objective-C撰寫,主要功能是針對數學表達的字串進行解析,
接著用調度場演算法,將一般人類易讀的中綴式(Infix)轉換成後綴式(postFix),
並計算出該數學式的結果,並可以自己定義函數。
shunting yard algorithm (調度場演算法)
https://en.wikipedia.org/wiki/Shunting-yard_algorithm
後綴式又稱逆波蘭表達式(reversed polish notaion, 簡稱RPN)
https://en.wikipedia.org/wiki/Reverse_Polish_notation
使用方法很簡單,只要把source資料夾內的兩個檔案:
BTMathParser.h
BTMathParser.m
加入到你的專案,並在需要的程式碼前面#import "BTMathParser.h"
然後創建一個BTMathParser的instance
BTMathParser *mathParser = [[BTMathParser alloc] init];
就可以解析一個數學表達字串並回傳其計算結果
float result = [mathParser valueForExpression:@"(1+2)*(2+3)" error:nil];
其實類似的程式庫在GitHub上已經不少見,而此程式庫的特色是可以用block的方式
自定義函數。因為是使用block,所以可以調用函數跟參數以外的資訊,例如寫一個
股價移動平均數的函數MA(n), n代表日數,歷史收盤價可以由別的地方傳遞。
除了自定義函數的功能以外,另外還有error物件可以告訴你有哪些錯誤
詳情請看說明檔。
以上簡介請多多指教,希望能夠幫到有需要的人