Какой тип данных 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" )