Форматирование большого десятичного числа с использованием NumberFormatter в Swift - PullRequest
0 голосов
/ 22 марта 2020

Я сделал это, чтобы отформатировать число, но оно не работает для больших чисел

let formatter = NumberFormatter()
formatter.numberStyle = .decimal


    if let number = formatter.number(from: "123456789123456789123") , let str = formatter.string(from:number){

        print(number)
        print(str)
    }

Он печатает

123456789123456800000
123,456,789,123,456,800,000

Он должен напечатать

123456789123456789123
123,456,789,123,456,789,123

Я думаю, что должно быть переполнение числа, есть ли альтернатива для достижения такого рода вещи.

1 Ответ

0 голосов
/ 22 марта 2020

Вы можете явно создать Decimal, чтобы обойти упомянутую ошибку

let formatter = NumberFormatter()
formatter.numberStyle = .decimal
if let decimalNumber = Decimal(string: "123456789123456789123"), let str = formatter.string(from:decimalNumber as NSNumber) {
    print(decimalNumber)
    print(str)
}
...