我正在处理从0.00到9999.99的数字范围。
我需要添加“˙”千位分隔符,因此1300,00
应该成为1˙300,00
。
NSNumberFormatter使用“,”作为分隔符,因此对我不利。
我尝试使用
func formatNumber (i: Float) -> String {
var counter = 0
var correctedNumber = ""
if i > 999 {
for char in "\(i)".characters {
if counter == 1 {
correctedNumber += "˙" + "\(char)"
} else {
correctedNumber += "\(char)"
}
counter++
}
} else {
correctedNumber = "\(i)"
}
return correctedNumber
}
但它不能格式化十进制数字。
这样做的正确方法是什么?
答案 0 :(得分:9)
您只需要正确配置NSNumberFormatter
。
let formatter = NSNumberFormatter()
formatter.groupingSeparator = "˙"
formatter.decimalSeparator = ","
formatter.usesGroupingSeparator = true
formatter.minimumFractionDigits = 2
测试
formatter.stringFromNumber(1300) // "1˙300,00"
答案 1 :(得分:2)
虽然设置一个特定的decimalSeparator
和groupingSeparator
肯定有效,但这并不是做你想做的最好的方法。
NSNumberFormatter
始终根据当前区域设置选择格式。如果语言环境设置为英语(通常为en-US
),则小数点分隔符为,
,分组为.
。
这样,如果美国用户打开应用程序,他们将看到正确格式化的数字。如果欧洲用户打开应用程序,他们还会看到正确格式化的数字(由设备设置指定)。
如果你真的希望应用程序有一个特定的数字格式,你可以明确地设置语言,例如:
let formatter = NSNumberFormatter()
formatter.locale = NSLocale(localeIdentifier: "it_IT")