Какой тип данных Swift я использую для валюты
У меня есть приложение iOS, которое будет выполнять множество базовых арифметических чисел, обозначающих валюту в долларах США (например, 25.00, составляющую $25.00).
У меня возникли проблемы с использованием типа данных Double на других языках, таких как Java и Javascript, поэтому я хотел бы узнать лучший тип данных для использования в валюте Swift.
Ответы
Ответ 1
Используйте NSDecimalNumber
(подробнее здесь). Пример:
let a = NSDecimalNumber(integer: 123456)
let b = NSDecimalNumber(integer: 1000)
let c = a.decimalNumberByDividingBy(b)
println(c)
// Result: "123.456"
Возможно, вы захотите использовать расширение, подобное этому, чтобы добавить перегрузку оператора в класс NSDecimalNumber
.
Ответ 2
Там действительно хороший lib называется Money:
let money: Money = 100
let moreMoney = money + 50 //150
Здесь есть много приятных функций, таких как безопасные для типа валюты:
let euros: EUR = 100
let dollars: USD = 1500
euros + dollars //Error
Двоичный оператор "+" не может применяться к операндам типа "EUR" (aka "_Money" ) и "USD" (иначе "_Money" )