Iphone 如何从文本字段中获取十进制值
在我的iPhone应用程序中,我需要用户能够在文本字段中输入十进制数,然后我需要将其转换为浮点数 我使用以下代码:Iphone 如何从文本字段中获取十进制值,iphone,uitextfield,decimal,Iphone,Uitextfield,Decimal,在我的iPhone应用程序中,我需要用户能够在文本字段中输入十进制数,然后我需要将其转换为浮点数 我使用以下代码: CGFloat amount = [amountTextField.text floatValue]; 当用户来自美国并使用点表示十进制值时,它可以正常工作,但对于使用逗号的欧洲用户,它不会获得值。在使用floatValue之前,我应该将,替换为,,还是有更好的方法?是的,您需要将逗号替换为“.”,并使用float替换为CGFloat 为此,请使用此方法 - (NSString
CGFloat amount = [amountTextField.text floatValue];
当用户来自美国并使用点表示十进制值时,它可以正常工作,但对于使用逗号的欧洲用户,它不会获得值。在使用floatValue之前,我应该将
,
替换为,
,还是有更好的方法?是的,您需要将逗号替换为“.”,并使用float
替换为CGFloat
为此,请使用此方法
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
一个更好的方法是使用NSDecimalNumber,不管怎样,浮点数都很难看。因为2.2应该是2.2,而不是2.2000000477
NSDecimalNumber *amount = [NSDecimalNumber decimalNumberWithString:amountTextField.text locale:[NSLocale currentLocale]];
如果您不想使用NSDecimalNumber,请查看NSNumberFormatter和NSNumber。您也可以将其转换回CGFloat(这只是float的另一个名称)
说到本地化,您总是希望使用内置功能。当您使用字符串编辑时,您的操作是错误的。iOS 4.1及更高版本支持UIKeyboardTypeDecimalPad,您不应该转换任何字符 例如:
someTextField.keyboardType=UIKeyboardTypeDecimalPad;