0

私は NSString を持っています@"200 * (1 + (5 / 100))"

に入れたらNSExpression *expression = [NSExpression expressionWithFormat:myString];

そしてNSLog expression私は文字列を返します。ただし、呼び出す[[expression expressionValueWithObject:nil context:nil] doubleValue]と、の結果が得られ200ます。

NSExpression2組の括弧を処理できませんか? using を使用した別の解決策NSExpressionです。MathLibraries を使用したくありません。非常に単純な数式しか持っていないからです。

ありがとう

4

1 に答える 1

2

もちろん、2 セットのブラケットを処理できます。問題は、単に値の型にあります。

これらすべての値を書き込む200 * (1 + (5 / 100))と、整数として扱われ、整数演算が使用されます。これは が に5 / 100評価されることを意味し0、それが結果として得られる理由です200。もしそうなら5.0 / 100(小数点に注意してください)、その除算は浮動小数点除算として扱われるため、正しい結果が得られます。

于 2014-06-27T08:44:49.930 に答える