在Swift

时间:2015-06-05 10:15:12

标签: swift string-formatting

这在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/

有什么想法吗? TIA。

1 个答案:

答案 0 :(得分:33)

你必须使用NumberFormatter:

    let formatter = NumberFormatter()
    formatter.minimumFractionDigits = 0
    formatter.maximumFractionDigits = 2
    print(formatter.string(from: 1.0000) ?? "")
    print(formatter.string(from: 1.2345) ?? "")

此示例将针对第一种情况打印1,针对第二种情况打印1.23;可以根据需要调整最小和最大小数位数。

我希望能帮到你!