作者subgn ( )
看板MacDev
标题[作品]MathParser 解析数学字串
时间Fri Dec 23 22:32:50 2016
在这边跟大家分享一个自己写的一个简单程式库,已放上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物件可以告诉你有哪些错误
详情请看说明档。
以上简介请多多指教,希望能够帮到有需要的人
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.193.173.122
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1482503578.A.BDC.html
1F:推 ho83leo: 推爱心 12/25 01:41
2F:推 ilms49898723: 推分享 12/26 09:26
3F:推 jeff12280: 推 12/27 17:07