0

strCal 文字列 strcal 値からの式は @"((24 - 18) / 87) * 100" です。結果を 10 進数 4 に修正したいので、floatValue メソッドを使用して結果を取得します。

しかし、6.8966 の代わりに 0 を取得します

これは私のコードです

NSString *strCal=[NSString stringWithFormat:@"   
                      ((%d%@)%@)%@",number,strMinus,strDivide,strMultiple];
    NSExpression *exp=[NSExpression expressionWithFormat:strCal];
    float result=[[exp expressionValueWithObject:nil context:nil] floatValue];
    NSLog(@"result:%f",result);

結果:0.000000

4

2 に答える 2

2

以下のように、文字列 strCal の 87 を float 値に変換することで、自分で見つけました。

@"((24 - 18) / 87.00) * 100"

コンパイラ(LLVM)が答えをfloatで出力するために、被除数または除数のいずれかがfloatでなければならないことを意味する理由

于 2012-11-22T06:55:08.233 に答える
0

この状況で最適なUser DDMathParserが必要だと思います。私はあなたが直面しているのと同じ問題に直面している私のプロジェクトの1つでそれを使用しました

DDMathEvaluator *eval = [DDMathEvaluator defaultMathEvaluator]; id value=[eval evaluateString:@"1/2" withSubstitutions:nil error:&error]; NSLog(@"Result %@",value); Result 0.5

于 2014-05-19T05:36:47.753 に答える