2

重複の可能性:
高速CまたはObjective-C数学パーサーとは何ですか?

数式をNSStringとして受け取る関数を作成しました。そして、文字列内のいくつかのものを置き換えて、数式を実行した後に値を取得する必要があります。これどうやってするの...

例:NSString * FormulaString = @ "((A / B)-1)* 100";

これで、Aを20に、Bを10に置き換えることができます。しかし、((20/10)-1)*100という計算値を100として取得するにはどうすればよいでしょうか。

ありがとう、ベン

4

4 に答える 4

8

式計算機を作成する必要があります。私が知っているオープンソースのObjectiveCライブラリはGCMathParserです

于 2012-09-19T17:58:41.060 に答える
6

数式がそれほど複雑でない場合は、次を使用できますNSExpression

NSExpression *e = [NSExpression expressionWithFormat:@"((20/10)-1)*100"];
NSNumber *result = [e expressionValueWithObject:nil context:nil];
NSLog(@"%@", result);
// Output: 100

これは、、、などの一部の関数でも機能sqrtします。サポートされている関数のリストexpについては、ドキュメントを参照してください。NSExpression

于 2012-09-19T18:14:51.377 に答える
2

NSString *入力を受け取り、数値出力を生成する数式パーサーを作成する必要があります。

于 2012-09-19T18:00:31.047 に答える
0

この方法で文字を置き換えることができます

NSString *formulaString = @"((A/B)-1)*100";

NSString *modifiedFormulaString = [formulaString stringByReplacingOccurrencesOfString:@"A" withString:@"10"];

modifiedFormulaString = [modifiedFormulaString stringByReplacingOccurrencesOfString:@"B" withString:@"10"];

ただし、データを計算するには、パーサーを使用して解析する必要があります。

于 2012-09-19T18:04:10.600 に答える