如何使用(a + b) ^ 2, sum((a + b) / 2)
计算NSExpression
之类的公式?我是NSExpression
的初学者。
(a + b)^ 2如何在目标c中使用整数2。
答案 0 :(得分:11)
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:
答案 1 :(得分:8)
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);
答案 2 :(得分:1)
NSExpression
不是通用数学表达式评估程序。它旨在与NSPredicate
一起用于描述核心数据查询中的选择标准。
答案 3 :(得分:-1)
NSExpression用于表示NSPredicate中的表达式。它不适合像你这样的任务。
实际上,您can使用NSExpression
来计算公式值,但这种用法非常有限。要评估任何数学表达式,您需要使用某种算法(即Shunting-yard)创建字符串解析器,或者仅重用this one之类的库。