在Swift中删除x小数位的尾随零的格式字符串

eri*_*osg 11 string-formatting swift

这在Swift(1.2)

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

let doubleValue2 = Double(10.0)
println(String(format: "%.2f", doubleValue2))
Run Code Online (Sandbox Code Playgroud)

打印

10.12
10.00
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种使用格式化程序或直接字符串格式而不是通过字符串操作来删除尾随零的方法,以便打印:

10.12
10
Run Code Online (Sandbox Code Playgroud)

我得到的最接近的是:

let doubleValue3 = Double(10.0)
println(String(format: "%.4g", doubleValue3))
Run Code Online (Sandbox Code Playgroud)

但是g使用有效数字,这意味着我必须分别计算我的小数位数.这听起来像一个丑陋的解决方案.

演示:http://swiftstub.com/651566091/

有任何想法吗?TIA.

Ica*_*aro 36

你必须使用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
Run Code Online (Sandbox Code Playgroud)

这个例子将为第一种情况打印1,为第二种情况打印1.23; 可根据需要调整最小和最大小数位数.

我希望能帮到你!

  • 太好了,我刚刚添加了`formatter.minimumIntegerDigits = 1`,所以如果我左边的数字为零,它将不会删除它(0.200将是0.2而不是0.2)。 (3认同)