在我的iPhone应用程序中,我需要用户能够在文本字段中输入小数,然后我需要将其转换为浮动。
我使用以下代码:
CGFloat amount = [amountTextField.text floatValue];
当用户来自美国并使用小数点值时,它可以正常工作,但对于使用逗号的欧洲用户而言,它不会获得该值。我应该在使用floatValue之前将,
替换为.
,还是有更好的方法?
答案 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;