2

我正在尝试将字符串公式评估为浮点数,但是我找不到解决方案。这是一个例子。我需要以这种方式计算大约 200 个公式。

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

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

结果=评估/计算(公式);

然后我将使用 Result 作为公式的结果。--> 结果 = @"12.845*x+(-0.505940)";

4

3 回答 3

8

您可以使用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文档以获取支持的功能列表。

于 2012-10-21T03:12:56.443 回答
0

您应该执行以下操作:

  1. 将 x 替换为其在字符串中的值\
  2. 逆波兰表示法将操作数(值)和运算符放入堆栈
  3. 执行计算
  4. 返回结果

我就是这样做的。

于 2012-10-20T23:59:50.677 回答
0

快速回答,

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
于 2017-06-16T09:32:30.160 回答