Нет, нет, нет, нет, нет, нет, нет, нет.
Используйте NSNumberFormatter
. Вот почему он существует .-floatValue
и -doubleValue
- это просто быстрые и простые временные исправления, но они плохо работают.Например:
NSLog(@"%f", [@"123" floatValue]); //logs 123.0000
NSLog(@"%f", [@"abc" floatValue]); //logs 0.0000
NSLog(@"%f", [@"0" floatValue]); //logs 0.0000
NSLog(@"%f", [@"42" floatValue]); //logs 42.0000
NSLog(@"%f", [@"42x" floatValue]); //logs 42.0000
-floatValue
не может отличить правильное число (@"0"
) от неправильного (@"abc"
).
NSNumberFormatter
наС другой стороны, вы получите nil
, если не сможете разобрать его, и NSNumber
, если сможете.Он также принимает во внимание такие вещи, как символы валюты, десятичный разделитель для региона и разделитель тысяч, а также языковой стандарт пользователя.-floatValue
, а друзья нет.
См. Этот вопрос для получения дополнительной информации: Как преобразовать строку NSString в номер NSN