0

我有一个来自 strCal 字符串 strcal 值的表达式是 @"((24 - 18) / 87) * 100" 我想让结果正确为 4 位小数,所以我使用 floatValue 方法检索结果

但是我得到 0 而不是 6.8966

这是我的代码

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 转换为如下所示的浮点值自己找到了它

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

为什么因为意味着被除数或除数必须为浮点数,以便编译器(LLVM)以浮点数输出答案

于 2012-11-22T06:55:08.233 回答
0

我认为您需要 User DDMathParser在这种情况下最好。我在我的一个项目中使用了它,该项目面临与您遇到的相同问题

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 回答