gpt4 book ai didi

objective-c - 'expressionValueWithObject' 方法可以将数字解释为 float 而不是整数吗?

转载 作者:行者123 更新时间:2023-11-30 14:03:47 24 4
gpt4 key购买 nike

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

大脑.m

-(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”附加到所有整数在评估字符串之前,但更好的解决方案可能是使用“适当的”例如,数学表达式解析器 https://github.com/davedelong/DDMathParser

关于objective-c - 'expressionValueWithObject' 方法可以将数字解释为 float 而不是整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32646911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com