字符串格式限制有效数字Swift

时间:2017-10-31 02:16:45

标签: swift

我需要将Double转换为String,并限制Swift中的最大位数。我使用以下内容将小数点后的数字限制为2。

numberString = String(format: "%.02f", 0.4394)

如何做类似的事情,但将整数限制为5位数,即9438.45至9438.5

2 个答案:

答案 0 :(得分:3)

我建议使用NumberFormatter并设置其maximumSignificantDigits属性:

let fmt = NumberFormatter()
fmt.numberStyle = .decimal
//fmt.minimumSignificantDigits = 5 // optional depending on needs
fmt.maximumSignificantDigits = 5

var n = 0.43578912

for _ in 0..<5 {
    print(fmt.string(for: n)!)
    n *= 10
}

输出:

  

0.43579
  4.3579
  43.579
  435.79
  4,357.9

您可以根据需要指定其他格式设置选项,例如禁用分组分隔符。

如果您希望尾数为零且数字较少的数字,则设置minimumSignificantDigits将非常有用。

答案 1 :(得分:1)

使用&#34; g&#34;格式说明符:

var n = 0.4354345

for i in 0..<5 {
    print(String(format: "%5g", n))
    n = n * 10
}

会给你:

0.435435
4.35435
43.5435
435.435
4354.35

您的下一个最佳选择是转换,然后通过截断字符串来修复。