我有一个NSString的公式…如何评估它
可能重复:
什么是快速C或Objective-Cmathparsing器?
我有一个创build一个函数,将公式作为NSString。 而且我必须replacestring中的一些东西,并在执行公式之后获取值。 我怎样才能做到这一点…
例如:NSString * formulaString = @“((A / B)-1)* 100”;
现在我可以用A代替20,B代替10.但是如何得到((20/10)-1)* 100的计算值为100
谢谢,本
你可以用这个方法replace字符
NSString *formulaString = @"((A/B)-1)*100"; NSString *modifiedFormulaString = [formulaString stringByReplacingOccurrencesOfString:@"A" withString:@"10"]; modifiedFormulaString = [modifiedFormulaString stringByReplacingOccurrencesOfString:@"B" withString:@"10"];
但要计算dat你需要parsing它使用一些分析器。
你必须build立expression式计算器。 一个开源的C库我知道的是GCMathParser
如果你的公式不是太复杂,你可以使用NSExpression
:
NSExpression *e = [NSExpression expressionWithFormat:@"((20/10)-1)*100"]; NSNumber *result = [e expressionValueWithObject:nil context:nil]; NSLog(@"%@", result); // Output: 100
即使对于某些函数(如sqrt
, exp
,…)也是NSExpression
。请参阅NSExpression
文档以获取支持的函数列表。
您将需要编写一个mathexpression式分析器,它接受一个NSString *
input并产生一个数字输出。