Objective c Can';表达式值with object';方法将数字解释为浮点数而不是整数?

Objective c Can';表达式值with object';方法将数字解释为浮点数而不是整数?,objective-c,Objective C,我正在制作一个计算器,它将输入记录在一个名为“inputLabel”的标签中,然后将答案输出到另一个名为“outputLabel”的标签中(类似于图形计算器)。一旦用户完成输入表达式,表达式将存储在NSString对象中,然后使用NSPredicate类进行分析,并使用NSExpression类进行计算。我所做的工作是有效的,但我注意到对于特定操作,答案是不正确的。例如,如果用户键入“25/2“计算器返回12,这显然是错误的。但是,如果用户输入“25/2.0”或“25.0/2”,计算器将返回12

我正在制作一个计算器,它将输入记录在一个名为“inputLabel”的标签中,然后将答案输出到另一个名为“outputLabel”的标签中(类似于图形计算器)。一旦用户完成输入表达式,表达式将存储在NSString对象中,然后使用NSPredicate类进行分析,并使用NSExpression类进行计算。我所做的工作是有效的,但我注意到对于特定操作,答案是不正确的。例如,如果用户键入“25/2“计算器返回12,这显然是错误的。但是,如果用户输入“25/2.0”或“25.0/2”,计算器将返回12.5,这正是我想要的。NSExpression方法“expressionValueWithObject”似乎将操作数解释为整数而不是浮点数。如果是这种情况,是否有办法更改“expressionValueWithObject”方法以将操作数解释为浮点数

布莱恩

-(float)performCalculation: (NSString *)operation
{
    NSPredicate *parsed = [NSPredicate predicateWithFormat:[operation stringByAppendingString:@"=1.0"]];
    NSExpression *inputExpressionParsed = [(NSComparisonPredicate *)parsed leftExpression];
    NSNumber *result = [inputExpressionParsed expressionValueWithObject:inputExpressionParsed context:nil];

    return [result floatValue];
}
ViewController.m

- (IBAction)equalsPressed:(id)sender
{
    //self.inputLabel.text = [self.inputLabel.text stringByAppendingString:@".0"];
    NSString *inputExpression = self.inputLabel.text;
    self.inputLabel.text = [self.inputLabel.text stringByAppendingString:@"="];
    float result = [self.brain performCalculation:inputExpression];
    self.outputLabel.text = [NSString stringWithFormat:@"%g", result];
}

否,
NSExpression
无法执行此操作。您可以尝试将“.0”附加到所有整数 在对字符串求值之前,最好使用“适当的” 例如,数学表达式解析器
不,
NSExpression
不能这样做。您可以尝试将“.0”附加到所有整数 在对字符串求值之前,最好使用“适当的” 例如,数学表达式解析器

您可以遍历表达式树,将表达式替换为整数值(expressionType==NSConstantExpression)。它取决于计算器的一些功能,不管它是否值得。

您可以在表达式树中迭代,用整数值替换表达式(expressionType==NSConstantExpression)。这取决于你的计算器的一些功能,不管它值不值得。

谢谢你的回复。我已经将DDMathParser添加到我的项目中,但我不知道如何使用它。是否有说明如何使用DDMathParser的文档或说明哪些方法可用的文档?@user2954945:您阅读了吗?这里有到操作符列表、函数列表和各种用法示例的链接。我又看了一遍,找到了我想要的!谢谢谢谢你的回复。我已经将DDMathParser添加到我的项目中,但我不知道如何使用它。是否有说明如何使用DDMathParser的文档或说明哪些方法可用的文档?@user2954945:您阅读了吗?这里有到操作符列表、函数列表和各种用法示例的链接。我又看了一遍,找到了我想要的!谢谢