2
NSString *formul=@"3^2";
NSExpression *e = [NSExpression expressionWithFormat:formul];
int result = [[e expressionValueWithObject:nil context:nil] intValue];
NSLog(@"formule:%d", result);

(a+b)^2を計算しようとしています。

4

3 に答える 3

2

^ の代わりに ** を使用

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

于 2013-01-14T23:35:25.797 に答える
1

上記のコードを次のように置き換えます。

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-24T08:17:59.160 に答える
1
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:36
于 2012-10-26T12:50:55.833 に答える