5

有没有一种相对简单的方法可以在 Objective C 中将数学运算符与字符串变量一起使用?

例如:

字符串“x*x”应该返回“x^2”

字符串“x/x”应该返回“1”

我正在寻找实际上会使用变量名称“x”而没有分配数值并以“x”形式返回答案的东西。

4

3 回答 3

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);

根据您的要求将任何数据类型更改floatintetc

于 2013-04-24T13:28:54.570 回答
1

我已经寻找了一个进行代数操作的Objective C lib,但还没有找到太多。

因此,您最好的选择可能是使用 C 库(毕竟,Objective C 是 ANSI C 的超集,您可以将两者混合使用)。

查看这个 C 数学库列表:

http://www.mathtools.net/C_C__/Mathematics/

从该列表中,似乎Mathomatic可能有用。

在 Objective C 中使用 C 库的两种策略:

  1. 只需从您的 Objective C 代码中调用 C 函数

  2. 为 C 库创建一个 Objective C 包装器并使用它(并可能将其发布给其他人使用:)

于 2013-04-24T14:08:36.133 回答
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 Settings 中的 Header Search Path 中。然后转到 Build Phases - Link Binary With Libraries 单击“+”并选择 Add Other,然后选择您编译的库文件 libginac.a 这就是我的想法。不要忘记将您的 ginac.h 文件包含到您的类头文件中。

#include <ginac.h>
于 2013-07-08T16:57:43.657 回答