我正在尝试添加文本字段的值加上我的标签值,并将其放在另一个标签中。
-(IBAction)finalTipTotalSelection:(id)sender
{
NSString *billFinalAmount = [billAmountTextField text];
float billFinalAmountFloat = [billFinalAmount floatValue];
NSString *tipTotalAmount = [resultLabel text];
float tipTotalAmountFloat = [tipTotalAmount floatValue];
float finalAmountShow = billFinalAmountFloat + tipTotalAmountFloat;
NSString *finalResult = [NSString stringWithFormat:@"$ %0.2f", finalAmountShow];
[finalTotalLabel setText:finalResult];
}
我正在为Strings创建floatValues,然后在float中将其他floatValues添加到一起,最后在标签中显示它。唯一的问题是当我运行此代码时,finalTotalLabel(显示最终金额)仅显示billAmountTextField的值。因此,如果billAmountTextField = 187.82且tipTotalAmount为10,则finalTotalLabel将显示187.82(不是197.82)。我似乎无法找到我的错误。谢谢你的帮助!
答案 0 :(得分:1)
它是由tipTotalAmount在字符串开头有$字符引起的。结果量的结果浮点值将为0.0,因为:
如果接收者没有以有效开头,则floatValue ...返回0.0 浮点数的文本表示。
您可以查看class reference of NSString以获取有关floatValue返回值的说明。
在将消息floatValue传递给NSString实例之前,首先尝试过滤掉非小数和点字符,例如:
NSMutableCharacterSet *_alnum = [NSMutableCharacterSet characterSetWithCharactersInString:@"."];
[_alnum formUnionWithCharacterSet:[NSCharacterSet decimalDigitCharacterSet]];
NSString *newTipTotalAmount = [[tipTotalAmount componentsSeparatedByCharactersInSet:
[_alnum invertedSet]]
componentsJoinedByString:@""];
float tipTotalAmountFloat = [newTipTotalAmount floatValue];
此处 newTipTotalAmount 与 tipTotalAmount (“$ 39.19”)相比将为“39.19”,并且将floatValue消息传递给newTipTotalAmount将为您提供正确的浮点值。