Форматировать строку с завершающими нулями для x десятичных знаков в Swift

Это в Swift (1.2)

let doubleValue1 = Double(10.116983123)
println(String(format: "%.2f", doubleValue1))

let doubleValue2 = Double(10.0)
println(String(format: "%.2f", doubleValue2))

Печать

10.12
10.00

Я ищу способ с использованием форматирования или прямого формата строки, а не с помощью строковых манипуляций, чтобы удалить конечные нули, поэтому для печати:

10.12
10

Ближайший я получил:

let doubleValue3 = Double(10.0)
println(String(format: "%.4g", doubleValue3))

Но g использует значимые цифры, что означает, что мне придется вычислять цифры десятичных знаков отдельно. Это звучит как уродливое решение.

Демо: http://swiftstub.com/651566091/

Любые идеи? ТИА.

Ответ 1

Вы должны использовать NumberFormatter:

    let formatter = NumberFormatter()
    formatter.minimumFractionDigits = 0
    formatter.maximumFractionDigits = 2
    print(formatter.string(from: 1.0000)!) //1
    print(formatter.string(from: 1.2345)!) //1.23

В этом примере будет напечатано 1 для первого случая и 1,23 для второго; количество минимальных и максимальных десятичных разрядов можно регулировать по мере необходимости.

Надеюсь, это поможет вам!