Какой тип объекта предназначен для хранения денежной суммы? У меня есть UITextField
, где пользователь может ввести сумму денег в долларах, которую я конвертирую в другую валюту, и мне интересно, в каком типе хранить сумму (float
/double
не подходит для денег), и что выбрать для клавиатуры для этого поля?Объект удерживания денег
ответ
Я бы предложил использовать NSDecimalNumber. Кроме того, вы хотите использовать такие методы, как:
- (NSDecimalNumber *)decimalNumberByAdding:(NSDecimalNumber *)decimalNumber withBehavior:(id <NSDecimalNumberBehaviors>)behavior
над более основных
- (NSDecimalNumber *)decimalNumberByAdding:(NSDecimalNumber *)decimalNumber
Потому что один из поведения вы можете предоставить это:
NSRoundBankers
раунда до максимально возможного возвращаемого значения; когда на полпути между двумя возможностями, верните возможность, чья последняя цифра равно. На практике это означает, что в конечном итоге цифры будут округлены так часто, как они округлены; там не будет систематического смещения.
Конечно, использование NSDecimal также может быть использовано, но я предпочитаю OO API NSDecimalNumber над API на основе NS из NSDecimal.
Вы можете использовать NSDecimal или NSDecimalNumber, которые являются точными, хранятся в качестве базовых 10 чисел, в отличие от float или double.
вы должны сделать следующие вещи
- Установить тип клавиатуры десятичного
- Установить текстовое поле в представлении клавиатуры аксессуара (не обязательно)
- Применить регулярное выражение, которое использовало как только пользователь плавающий пункт (.) Ему не разрешается повторно вводить его.
- На TextField закончите редактирование вы можете сохранить его как NSDecimal
Я хотел бы использовать NSDecimalNumber или NSDecimal, так как они хранят в base10.
Для клавиатуры есть Decimal pad.