XCode Как вычислить строковую формулу с выражением X внутри

Я пытаюсь оценить формулу строки с плавающей точкой, но я не могу найти решение. Вот пример. Мне нужно рассчитать около 200 формул таким образом.

- NSString *Formula;
- Float  *Result;
- Float *x

- x = 12;
- Formula = @"12.845*x+(-0.505940)";

Результат = Оценка / Расчет (Формула);

Тогда я буду использовать Результат в результате формулы. -> Результат = @"12.845*x+(-0.505940)";

3 ответа

Ты можешь использовать 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

Это работает даже с некоторыми функциями, такими как sqrt, exp... увидеть NSExpression документация для списка поддерживаемых функций.

Вы должны сделать следующее:

  1. Замените x его значением в строке \
  2. Возьмите операнды (значения) и операторы в стек в обратной польской записи
  3. Выполнять расчеты
  4. Вернуть результат

Вот как бы я к этому.

Быстрый ответ,

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
Другие вопросы по тегам