将 Int 转换为格式化字符串 (Swift)

Convert Int to a formatted string (Swift)

我正在尝试将 int 格式化为格式化字符串,例如 23 -> “0023”、100 -> 0100 等等。我已经完成了下面的函数,但它会吃掉每个 10 的倍数的数字的最后一位,比如 900 变成 090,而不是 0900。 请帮我修复那个错误,谢谢。

func convert(_ score: Int) -> String {
  return String(Float(score) / 1000.0).components(separatedBy: ".").joined()
}

您可以使用 NumberFormatter 并将 minimumIntegerDigits 设置为 4 来实现您的目标。

let nf = NumberFormatter()
nf.minimumIntegerDigits = 4
nf.locale = Locale(identifier: "en_US_POSIX") // Avoid thousands separator
nf.string(for: 23) //"0023"
nf.string(for: 90) //"0900"

出于性能原因,您应该避免每次需要时都重新创建 NumberFormatter 实例,而是在一个范围内定义它(即通过将其设为 instance/static 属性相关 class) 以便可以重复使用。

除以 1000 并依赖于特定的浮点表示形式是脆弱的,并且对于此目的来说不是一个好主意。 一个简单的解决方案是使用最少 4 位数字的 %ld 格式:

func convert(_ score: Int) -> String {
    return String(format: "%04ld", score)
}

print(convert(23)) // 0023