XCode How to evaluate String formula with an X expression inside

前端 未结 3 743
星月不相逢
星月不相逢 2020-12-18 14:40

I\'m tring to evaluate a string formula to a float but, I cannot find a solution. Here is an example. I need to calculate about 200 formulas in this way.

-          


        
相关标签:
3条回答
  • 2020-12-18 15:07

    You should do as following:

    1. Substitute x with its value in the string\
    2. Take operands (values) and operators into the stack in the Reverse Polish Notation
    3. Perform calculations
    4. Return result

    This is how I would to that.

    0 讨论(0)
  • 2020-12-18 15:27

    Swifty Answer,

    let formula = "12.845*x+(-0.505940)"
    let x = 12
    
    let expr = NSExpression(format: formula)
    let object = ["x":x]
    
    let result = expr.expressionValue(with: object, context: nil)
    
    print(result)
    //Output: 153.63406
    
    0 讨论(0)
  • 2020-12-18 15:31

    You can use NSExpression:

    NSString *formula = @"12.845*x+(-0.505940)";
    float x = 12.0;
    
    NSExpression *expr = [NSExpression expressionWithFormat:formula];
    NSDictionary *object = [NSDictionary dictionaryWithObjectsAndKeys:
                              [NSNumber numberWithFloat:x], @"x", nil];
    
    float result = [[expr expressionValueWithObject:object context:nil] floatValue];
    NSLog(@"%f", result);
    // Output: 153.634064
    

    This works even with some functions such as sqrt, exp, ... See the NSExpression documentation for a list of supported function.

    0 讨论(0)
提交回复
热议问题