Как получить десятичное значение из текстового поля - PullRequest
1 голос
/ 08 марта 2011

В моем приложении для iPhone мне нужно, чтобы пользователь мог вводить десятичную сумму в текстовое поле, а затем мне нужно преобразовать ее в число с плавающей точкой.

Я использую следующий код:

CGFloat amount = [amountTextField.text floatValue];

Он отлично работает, когда пользователь из США и использует точку для десятичных значений, но для европейских пользователей, которые используют запятую, вместо этого он не получает значение.Стоит ли просто заменить , на . перед использованием floatValue или есть лучший способ?

Ответы [ 3 ]

1 голос
/ 08 марта 2011

лучшим способом было бы использовать NSDecimalNumber, поплавки в любом случае безобразны. Потому что 2.2 должно быть 2.2, а не 2.2000000477

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

Если вы не хотите использовать NSDecimalNumber, взгляните на NSNumberFormatter и NSNumber. Вы можете конвертировать его обратно в CGFloat (это просто еще одно название для float).

Когда дело доходит до локализации, вы всегда хотите использовать встроенную функциональность. Когда вы используете редактирование строк, вы делаете это неправильно.

1 голос
/ 08 марта 2011

да, вам нужно заменить запятую на "." а также используйте float вместо CGFloat

используйте этот метод для этой цели

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
0 голосов
/ 06 сентября 2012

iOS 4.1 и выше поддерживают UIKeyboardTypeDecimalPad , и вы не должны преобразовывать никакие символы.

Пример:

someTextField.keyboardType=UIKeyboardTypeDecimalPad;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...