【问题标题】:How to get decimal value from text field如何从文本字段中获取十进制值
【发布时间】:2011-03-08 11:40:49
【问题描述】:
在我的 iPhone 应用程序中,我需要用户能够在文本字段中输入小数,然后我需要将其转换为浮点数。
我使用以下代码:
CGFloat amount = [amountTextField.text floatValue];
当用户来自美国并使用点作为十进制值时,它可以正常工作,但对于使用逗号的欧洲用户,它不会获得值。我应该在使用 floatValue 之前将 , 替换为 . 还是有更好的方法?
【问题讨论】:
标签:
iphone
uitextfield
decimal
【解决方案1】:
更好的方法是使用 NSDecimalNumber,无论如何浮点数都很丑。因为 2.2 应该是 2.2 而不是 2.2000000477
NSDecimalNumber *amount = [NSDecimalNumber decimalNumberWithString:amountTextField.text locale:[NSLocale currentLocale]];
如果您不想使用 NSDecimalNumber,请查看 NSNumberFormatter 和 NSNumber。您也可以将其转换回 CGFloat(这只是 float 的另一个名称)。
说到本地化,您总是希望使用内置功能。当您使用字符串编辑时,您做错了。
【解决方案2】:
是的,您需要将逗号替换为“。”并且还使用float 而不是CGFloat
为此目的使用此方法
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
【解决方案3】:
iOS 4.1 及更高版本支持 UIKeyboardTypeDecimalPad,您不应转换任何字符。
例子:
someTextField.keyboardType=UIKeyboardTypeDecimalPad;