Является ли NSNumberFormatter единственным способом форматирования NSDecimalNumber?
Я использую NSDecimalNumber для хранения денег в Core Data. Я наивно использовал stringWithFormat: сначала для форматирования значения, позже понимая, что он не поддерживает NSDecimalNumber и вместо этого форматировал указатель:( Поэтому после некоторого чтения через документы я научился использовать NSNumberFormatter, чтобы получить желаемый формат. Но это просто поражает меня как "трудный путь". Есть ли более простой способ, чем это:?
NSNumberFormatter * formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle: NSNumberFormatterCurrencyStyle];
priceField.text = [formatter stringFromNumber: ent.price];
[formatter release];
Ответы
Ответ 1
Нет ничего плохого в этом подходе, и это обычный шаблон для преобразования непрозрачных классов чисел в строки.
Если у меня есть UIView
, который часто использует форматтер, у меня обычно будет один экземпляр, поэтому я не буду повторно использовать alloc
/init
/release
форматтер.
Ответ 2
на iOS 4.0, а затем вы можете использовать этот метод:
NSString* currencyString = [NSNumberFormatter
localizedStringFromNumber:number
numberStyle:NSNumberFormatterCurrencyStyle];
Ответ 3
NSNumberFormatter может быть дорогостоящим, почему бы просто не вызвать [ent descriptionWithLocale:]
Ответ 4
Просто преобразуйте его в double и используйте "F"
[NSString stringWithFormat: @ "% 1.2F", [ent doubleValue]];