0

我正在尝试添加我的文本字段的值加上我的标签的值并将其放在另一个标签中。

-(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];
}

我正在为字符串创建 floatValues,然后在 float 中将其他 floatValues 添加在一起,最后将其显示在标签中。唯一的问题是当我运行此代码时,finalTotalLabel(显示最终金额)仅显示 billAmountTextField 的值。因此,如果 billAmountTextField = 187.82 并且 tipTotalAmount 为 10,则 finalTotalLabel 将显示 187.82(而不是 197.82)。我似乎找不到我的错误。谢谢你的帮助!

4

1 回答 1

1

它是由在字符串开头有 $ 字符的 tipTotalAmount 引起的。小费金额的结果浮点值将为 0.0,因为:

floatValue... 如果接收方不是以浮点数的有效文本表示开始,则返回 0.0。

floatValue返回值的解释可以看NSString的类参考。

在将消息 floatValue 传递给它之前,尝试先从 NSString 实例中过滤掉非小数和点字符,例如:

NSMutableCharacterSet *_alnum = [NSMutableCharacterSet characterSetWithCharactersInString:@"."];
[_alnum formUnionWithCharacterSet:[NSCharacterSet decimalDigitCharacterSet]];
NSString *newTipTotalAmount = [[tipTotalAmount componentsSeparatedByCharactersInSet:
                            [_alnum invertedSet]]
                           componentsJoinedByString:@""];
float tipTotalAmountFloat = [newTipTotalAmount floatValue];

这里newTipTotalAmount将是“39.19”,而tipTotalAmount是“$ 39.19”,将 floatValue 消息传递给 newTipTotalAmount 将为您提供正确的浮点值。

于 2013-06-24T03:07:53.853 回答