在Objective C中是否有一种相对简单的方法可以将数学运算符与字符串变量一起使用?
例如:
字符串“x * x”应返回“x ^ 2”
字符串“x / x”应返回“1”
我正在寻找实际上使用变量名“x”而没有指定数值的东西,并以“x”的形式返回答案。
答案 0 :(得分:1)
如果您将'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
等
答案 1 :(得分:1)
我已经找到了一个代数操作的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包装并使用它(也许可以将其发布给其他人使用:)
答案 2 :(得分:0)
您可以看到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 Phases - Link Binary With Libraries单击“+”并选择Add Other,然后选择已编译的库文件libginac.a 这就是我想的。 别忘了将ginac.h文件包含在类头文件中。
#include <ginac.h>