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

Iphone 如何从文本字段中获取十进制值,iphone,uitextfield,decimal,Iphone,Uitextfield,Decimal,在我的iPhone应用程序中,我需要用户能够在文本字段中输入十进制数,然后我需要将其转换为浮点数 我使用以下代码: CGFloat amount = [amountTextField.text floatValue]; 当用户来自美国并使用点表示十进制值时,它可以正常工作,但对于使用逗号的欧洲用户,它不会获得值。在使用floatValue之前,我应该将,替换为,,还是有更好的方法?是的,您需要将逗号替换为“.”,并使用float替换为CGFloat 为此,请使用此方法 - (NSString

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

我使用以下代码:

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;