如何在 swift 中使用 var NumberFollowers = 12458 显示 12,4K?

How to display 12,4K with var NumberFollowers = 12458 in swift?

如何在 swift 中使用变量 NumberFollowers = 12458 显示 12,4K?

显示的数字 (12,4K) 应在 NumberFollower 更改值时立即更改值。

示例:如果 NumberFollowers 等于 45875,则显示的数量必须等于 45,8K

PS: 我对 12,4K 逗号有疑问。

这就是我要显示的内容:

1234 -> 1234

12345 -> 12,3K

123456 -> 123K

1234567 -> 1,2M

12345678 -> 12,3M

123456789 -> 123M

这是我的

if NumberFollowers > 999999 {
    NumberFollowersLabel.text = "\(NumberFollowers/1000000) M"
} else if NumberFollowers > 9999 {
    NumberFollowersLabel.text = "\(NumberFollowers/1000) K"
} else {
    NumberFollowersLabel.text = "\(NumberFollowers)"
}

这是我的代码显示的内容

1234 -> 1234

12345 -> 12K

123456 -> 123K

1234567 -> 1M

12345678 -> 12M

123456789 -> 123M

这是一种方法 - 基于您所展示的值的格式化方式:

func formatNumber(_ i: Int) -> String {
    let nf = NumberFormatter()
    nf.usesGroupingSeparator = true
    nf.numberStyle = .decimal
    
    var newNum: Double = 0
    var numDec: Int = 0
    var sPost: String = ""
    
    switch i {
    case 0..<10_000:
        newNum = Double(i)
    case 10_000..<100_000:
        newNum = Double(i) / 1_000.0
        numDec = 1
        sPost = "K"
    case 100_000..<1_000_000:
        newNum = Double(i) / 1_000.0
        sPost = "K"
    case 1_000_000..<100_000_000:
        newNum = Double(i) / 1_000_000.0
        numDec = 1
        sPost = "M"
    default:
        newNum = Double(i) / 1_000_000.0
        sPost = "M"
    }

    nf.maximumFractionDigits = numDec
    return (nf.string(for: newNum) ?? "0") + sPost
}

检查:

    let a: [Int] = [
        1234,
        12345,
        123456,
        1234567,
        12345678,
        123456789
    ]
    
    a.forEach { n in
        print(formatNumber(n))
    }

千位和小数分隔符将基于区域设置的默认值。

因此,使用美国语言环境的调试输出是:

1,234
12.3K
123K
1.2M
12.3M
123M

并且,例如,使用德国语言环境:

1.234
12,3K
123K
1,2M
12,3M
123M