Удалить конечные числа из строки

Я получаю два ребенка Doubles из JSON:

1.12 и 0.00007067999999

Второе число автоматически переключается на экспоненциальное представление (7.067e-05), поэтому я использую функцию String(format:"%.8f", NUMBER), чтобы сделать его 0.00007067, да, это работает, но теперь мое первое число становится 1.12000000. Как очистить замыкающие числа?

Я пробовал использовать Swift - Remove Trailing Zeros From Double , но %g формат снова изменяет второе число на экспоненциальное представление, поэтому %g не подходит. Какие-либо предложения?


person Bogdan Bogdanov    schedule 23.12.2017    source источник
comment
Чего вы на самом деле пытаетесь достичь? Если вы хотите сохранить фактические числа как двойные, вам не нужно заботиться о том, чтобы значение отображалось с использованием экспоненциальной записи. Если вы хотите сохранить числа в виде строк, но сделать так, чтобы в них было меньше дробных цифр, вы должны использовать NumberFormatter.   -  person Dávid Pásztor    schedule 23.12.2017


Ответы (1)


Вы можете использовать NumberFormater и установить минимальное и максимальное количество дробей:

let double1 = 1.12
let double2 = 0.00007067999999

let numberFormatter = NumberFormatter()
numberFormatter.minimumFractionDigits = 2
numberFormatter.maximumFractionDigits = 8
numberFormatter.minimumIntegerDigits = 1
numberFormatter.string(for: double1) ?? ""   // "1.12"
numberFormatter.string(for: double2) ?? ""   // "0.00007068"

если вы хотите округлить дробные числа вниз, вы можете установить параметр режима округления форматирования на .down:

numberFormatter.roundingMode = .down
numberFormatter.string(for: double2) ?? ""   // "0.00007067"
person Leo Dabus    schedule 23.12.2017