Если вам нужна точность более 15 цифр, вы можете использовать тип Swift Decimal. Кстати, вы должны использовать его строковый инициализатор при создании вашего Decimal значения и создать stati c NumberFormatter, чтобы не создавать новый каждый раз, когда вы вызываете это свойство:
extension Decimal {
var formatedPrice: String? {
Decimal.formatter.string(for: self)
}
static let formatter: NumberFormatter = {
let formatter = NumberFormatter()
formatter.locale = Locale(identifier: "ja_JP")
formatter.numberStyle = .currency
return formatter
}()
}
Использование:
Decimal(string: "12121212121212121987")?.formatedPrice // "¥12,121,212,121,212,121,987"