有没有一种相对简单的方法可以在 Objective C 中将数学运算符与字符串变量一起使用?
例如:
字符串“x*x”应该返回“x^2”
字符串“x/x”应该返回“1”
我正在寻找实际上会使用变量名称“x”而没有分配数值并以“x”形式返回答案的东西。
有没有一种相对简单的方法可以在 Objective C 中将数学运算符与字符串变量一起使用?
例如:
字符串“x*x”应该返回“x^2”
字符串“x/x”应该返回“1”
我正在寻找实际上会使用变量名称“x”而没有分配数值并以“x”形式返回答案的东西。
如果您将“x”值作为字符串,那么您可以将其评估为:
NSString *string=@"3*3";
NSExpression *expression = [NSExpression expressionWithFormat:string];
float result = [[expression expressionValueWithObject:nil context:nil] floatValue];
NSLog(@"%f", result);
还,
NSString *string=@"34*(2.56+1.79)-42/1.5";
NSNumber *result=[NSExpression expressionWithFormat:string];
NSLog(@"%@", result);
根据您的要求将任何数据类型更改float
为int
etc
我已经寻找了一个进行代数操作的Objective C lib,但还没有找到太多。
因此,您最好的选择可能是使用 C 库(毕竟,Objective C 是 ANSI C 的超集,您可以将两者混合使用)。
查看这个 C 数学库列表:
http://www.mathtools.net/C_C__/Mathematics/
从该列表中,似乎Mathomatic可能有用。
在 Objective C 中使用 C 库的两种策略:
只需从您的 Objective C 代码中调用 C 函数
为 C 库创建一个 Objective C 包装器并使用它(并可能将其发布给其他人使用:)
您可以查看 GiNaC 库 (www.ginac.de)。它是开源数学库。您可以使用此库简化代数表达式。您还可以在 OSX 上编译它并将其链接到您的 Xcode 项目中,就像静态 C++ 库一样。1.您需要下载Ginac、CLN和Pkg-Config(http://www.freedesktop.org/wiki/Software/pkg-config/)。2. 解压并编译 /usr/local 目录下的 Pkg-Config 3. 解压并编译 CLN 4. 解压并编译 Ginac
然后转到 Xcode 中的项目设置,选择您的目标,并将您的头文件路径放在 Build Settings 中的 Header Search Path 中。然后转到 Build Phases - Link Binary With Libraries 单击“+”并选择 Add Other,然后选择您编译的库文件 libginac.a 这就是我的想法。不要忘记将您的 ginac.h 文件包含到您的类头文件中。
#include <ginac.h>