NSString *formul=@"3^2";
NSExpression *e = [NSExpression expressionWithFormat:formul];
int result = [[e expressionValueWithObject:nil context:nil] intValue];
NSLog(@"formule:%d", result);我正在尝试计算(a+b)^2。
发布于 2013-01-15 07:35:26
使用**而不是^
NSString *formul=@"3 ** 2";
NSExpression *e = [NSExpression expressionWithFormat:formul];
int result = [[e expressionValueWithObject:nil context:nil] intValue];
NSLog(@"formule:%d", result);但要注意Foundation的幂函数是左关联的(这是错误的)。请参阅Dave Delong的帖子。
http://funwithobjc.tumblr.com/post/6196535272/parsing-mathematical-expressions
发布于 2012-10-24 16:17:59
将上面的代码替换为:
NSString *formul=[NSString stringWithFormat:@"%.f",pow(2,4)];
NSExpression *e = [NSExpression expressionWithFormat:formul];
int result = [[e expressionValueWithObject:nil context:nil] intValue];
NSLog(@"formule:%d", result);发布于 2012-10-26 20:50:56
NSNumber *number1 = [NSNumber numberWithInteger:2];
NSNumber *number2 = [NSNumber numberWithInteger:4];
NSString *strSqr=[NSString stringWithFormat:@"%@%@%@",number1,@"+",number2];
NSExpression *arrayExpression = [NSExpression expressionForConstantValue: number1];
NSArray *arrNum=[NSArray arrayWithObjects:[NSExpression expressionWithFormat:strSqr],arrayExpression,nil];
NSExpression* expression =[NSExpression expressionForFunction:@"raise:toPower:" arguments:arrNum];
NSLog(@"powerExp:%@",expression);
int resultSum = [[expression expressionValueWithObject:nil context: nil] intValue];
NSLog(@"resultnum:%d",resultSum);`我已经得到了输出:
powerExp:(2 + 4) ** 2
resultnum:36https://stackoverflow.com/questions/13045089
复制相似问题