2011-07-24 23 views
0

テキストフィールドには、次のような数式が含まれています。12+45-6この文字列を数値に変換することはできますか?数式を含む文字列を浮動小数点に変換する

述語機能を使用できますか?

NSString *foo = @"((a*b)/c+(d/5))+15"; 
// dummy predicate that contains our expression 
NSPredicate *pred = [NSPredicate predicateWithFormat:[foo stringByAppendingString:@" == 42"]]; 
NSExpression *exp = [pred leftExpression]; 
NSNumber *result = [exp expressionValueWithObject:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:4], @"a",[NSNumber numberWithInt:7], @"b",[NSNumber numberWithInt:2], @"c",[NSNumber numberWithInt:20], @"d",nil]context:nil]; 
NSLog(@"%@", result); // logs "33"<br/> 

私もはいこのhttps://github.com/unixpickle/ANExpressionParser

+0

:また、スタックを使用して、postix式を評価する方法を検討後、http://scriptasylum.com/tutorials/infix_postfix/algorithms/infix-postfix/index.htm

そして:あなたは、スタックを使用してpostfixの変換に中置になっているはずです

、あまりにも:http://stackoverflow.com/questions/6809655/math-expression-evaluation-very-fast-with-objective-c/6809698#6809698 – Monolo

+2

"コードを送信してください"はここでは、ここで眉をひそめています。言ってるだけ'。 –

+0

可能な複製http://stackoverflow.com/questions/4892152/what-is-a-fast-c-or-objective-c-math-parser – lhf

答えて

0

を見つけました。 「式の評価」を読むか、既製のスクリプトインタープリタを使用してください。 JavaScriptは、WebViewの一部としてすべてのiOSプログラムで使用できます。

+0

作品が、このシンプルさは恐ろしい価値があるとは思わないパフォーマンス。 –

+0

助けてくれてありがとう^^、サンプルxcodeプロジェクトへのリンクをお願いしますか? –

2

外部ライブラリに依存しないソリューションの1つは、文字列を一連のトークンに変換してから、単純なスタックマシンに接続されたshunting-yard algorithmを使用して式を評価することです。

+0

助けてくれてありがとう^^、サンプルxcodeプロジェクトへのリンクをお願いしますか? –

+0

私がリンクしているページは、C実装を提供しています。私はあなたがどこでもこれを行うための事前焼き上げられたXCodeプロジェクトを見つけることを知りません。これはあまりにも苦労しているように思えます(簡単なスナップとレゴを一緒に使ったエクササイズよりも時間がかかるプロジェクトです)、組み込みのJavaScriptエンジンを使用する必要があります。ただし、ウェブを起動する必要がありますブラウザコントロール、これはかなり重い解決策です。 –

+0

ありがとう^^私は自分でしなければならないと思う: –

1

パーサを使用してこの入力を解析し、それを評価する必要があります。私はmuParserを使ってこれを成功させた人がいることを聞いたことがあります。見てみな。 http://muparser.sourceforge.net/

+0

助けてくれてありがとう^^、サンプルxcodeプロジェクトへのリンクをお願いしますか? –

+2

私はすべての問題がサンプルのxcodeプロジェクトであることを祈っています。それはCライブラリです、あなたは自分自身のことを理解しなければなりません。 –

+0

hhhありがとうございました:) –

関連する問題