如何在 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
如何在 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