如何从文本字段中获取十进制值

时间:2011-03-08 11:40:49

标签: iphone uitextfield decimal

在我的iPhone应用程序中,我需要用户能够在文本字段中输入小数,然后我需要将其转换为浮动。

我使用以下代码:

CGFloat amount = [amountTextField.text floatValue];

当用户来自美国并使用小数点值时,它可以正常工作,但对于使用逗号的欧洲用户而言,它不会获得该值。我应该在使用floatValue之前将,替换为.,还是有更好的方法?

3 个答案:

答案 0 :(得分:1)

是的,你需要用“。”替换逗号。并使用float代替CGFloat

为此目的使用此方法

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement

答案 1 :(得分:1)

更好的方法是使用NSDecimalNumber,浮点数无论如何都是丑陋的。因为2.2应该是2.2而不是2.2000000477

NSDecimalNumber *amount = [NSDecimalNumber decimalNumberWithString:amountTextField.text locale:[NSLocale currentLocale]];

如果您不想使用NSDecimalNumber,请查看NSNumberFormatter和NSNumber。您可以将它转换回CGFloat(这也是浮动的另一个名称)。

在本地化方面,您始终希望使用内置功能。当你使用字符串编辑时,你做错了。

答案 2 :(得分:0)

iOS 4.1及更高版本支持 UIKeyboardTypeDecimalPad ,您不应转换任何字符。

示例:

someTextField.keyboardType=UIKeyboardTypeDecimalPad;