在这边跟大家分享一个自己写的一个简单程式库,已放上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物件可以告诉你有哪些错误
详情请看说明档。
以上简介请多多指教,希望能够帮到有需要的人