Label和Textfield之间的加法

时间:2013-06-24 02:28:33

标签: math uitextfield uilabel addition

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

-(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)。我似乎无法找到我的错误。谢谢你的帮助!

1 个答案:

答案 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将为您提供正确的浮点值。