如何使用NSExpression计算像(a+b)^2、sum((a+b)/2)这样的公式?我是NSExpression的初学者。
在Objective-C中如何使用平方符号^2表示整个平方。
在Objective-C中如何使用平方符号^2表示整个平方。
NSExpression在objective 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:
expressionWithFormat:
。 - peterflynnNSExpression非常适合评估数学表达式。它不仅限于核心数据查询,您也不需要额外的第三方库或编写自己的解析器来评估作为字符串的表达式。
实际上回答(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);
NSExpression
不是通用的数学表达式求值器。它旨在与 NSPredicate
一起用于描述 Core Data 查询中的选择条件。
NSExpression 用于表示 NSPredicate 中的表达式。它并不适用于像你这样的任务。
实际上,你可以使用NSExpression
计算公式值,但这种用法相当有限。要评估任何数学表达式,您需要使用一些算法(例如Shunting-yard)进行字符串解析,或者只需重复使用库,例如this one。
NSExpression
的主要目的是去除全大写字母。 - user529758