Objective C で文字列変数で数学演算子を使用する比較的簡単な方法はありますか?
例えば:
文字列「x*x」は「x^2」を返す必要があります
文字列「x/x」は「1」を返す必要があります
数値が割り当てられていない変数名「x」を実際に使用し、「x」に関して答えを返すものを探しています。
Objective C で文字列変数で数学演算子を使用する比較的簡単な方法はありますか?
例えば:
文字列「x*x」は「x^2」を返す必要があります
文字列「x/x」は「1」を返す必要があります
数値が割り当てられていない変数名「x」を実際に使用し、「x」に関して答えを返すものを探しています。
「x」値を文字列として入力すると、次のように評価できます。
NSString *string=@"3*3";
NSExpression *expression = [NSExpression expressionWithFormat:string];
float result = [[expression expressionValueWithObject:nil context:nil] floatValue];
NSLog(@"%f", result);
また、
NSString *string=@"34*(2.56+1.79)-42/1.5";
NSNumber *result=[NSExpression expressionWithFormat:string];
NSLog(@"%@", result);
要件に応じて、データ型float
をint
etcに変更します
代数操作を行う Objective C ライブラリを探しましたが、まだあまり見つかりません。
したがって、最善の策は C ライブラリを使用することです (Objective C は ANSI C のスーパーセットであり、2 つを混在させることができます)。
C 数学ライブラリのこのリストを確認してください。
http://www.mathtools.net/C_C__/数学/
そのリストから、数学が役立つようです。
Objective C で C ライブラリを使用するための 2 つの戦略:
Objective C コードから C 関数を呼び出すだけです
Cライブラリ用のObjective Cラッパーを作成し、それを使用します(そして、他の人が使用できるようにリリースするかもしれません:)