2

如何计算公式,如(a + b) ^ 2, sum((a + b) / 2)使用NSExpression?我是初学者NSExpression

(a + b) ^ 2 如何在目标 c 中使用整个正方形 2。

4

4 回答 4

12

NSExpression对于评估目标 c 中的数学表达式很有用。

让我们看看如何使用 NSExpression 找到数字的标准差

NSArray *arrNumbers = @[@3, @6, @3, @8, @4, @12, @9, @11];

NSExpression *expression = [NSExpression expressionForFunction:@"stddev:" arguments:@[[NSExpression expressionForConstantValue:arrNumbers]]];

id value = [expression expressionValueWithObject:nil context:nil];

就是这么简单。

以下是按类别分组的功能列表。

1)统计方法列表

average:
sum:
count:
min:
max:
median:
mode:
stddev:

2)算术函数

add:to:
from:subtract:
multiply:by:
divide:by:
modulus:by:
abs:
sqrt:
log:
ln:
raise:toPower:
exp:

3)边界函数

ceiling:
trunc: 

4)随机函数

random
random:

5)二进制算术函数

bitwiseAnd:with:
bitwiseOr:with:
bitwiseXor:with:
leftshift:by:
rightshift:by:
onesComplement:

6)日期功能

now

7)字符串函数

lowercase:
uppercase:

8)无操作

noindex:
于 2013-08-24T07:26:49.770 回答
9

NSExpression 非常适合评估数学表达式。它不仅限于核心数据查询,您不需要额外的第三方库或编写自己的解析器来将表达式评估为字符串。

实际回答 (a + b) ^ 2 的问题;)

NSNumber *a = @4;
NSNumber *b = @4;
NSExpression *expression = [NSExpression expressionWithFormat:@"(%@ + %@)**2", a, b];
NSNumber *result = [expression expressionValueWithObject:nil context:nil];
NSLog(@"%@",result);
于 2013-12-26T18:40:38.153 回答
1

NSExpression不是通用的数学表达式求值器。它旨在用于NSPredicate描述 Core Data 查询中的选择标准。

于 2012-10-22T07:57:37.650 回答
0

NSExpression用于表示NSPredicate中的表达式。它不适用于像您这样的任务。

实际上,您可以使用NSExpression来计算公式值,但这种用法非常有限。要评估任何数学表达式,您需要使用某种算法(即Shunting-yard或仅重用像这样的库)来制作字符串解析器。

于 2012-10-22T07:53:43.337 回答