将千位分隔符“˙”添加到浮点数
Adding thousands separator "˙" to a float number
我正在处理从 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
}
但它不能格式化小数。
正确的做法是什么?
您只需要正确配置 NSNumberFormatter
。
let formatter = NSNumberFormatter()
formatter.groupingSeparator = "˙"
formatter.decimalSeparator = ","
formatter.usesGroupingSeparator = true
formatter.minimumFractionDigits = 2
测试
formatter.stringFromNumber(1300) // "1˙300,00"
虽然设置特定的 decimalSeparator
和 groupingSeparator
确实有效,但这并不是您想要的最佳方式。
NSNumberFormatter
总是根据当前语言环境选择格式。如果区域设置为英语(通常为 en-US
),则小数点分隔符为 ,
,分组分隔符为 .
.
这样,如果美国用户打开应用程序,他们将看到适合他们的正确格式的数字。如果欧洲的用户打开该应用,他们还会看到格式正确的数字(根据他们的设备设置指定)。
如果您真的希望应用程序具有一种特定的数字格式,您可以明确设置语言,例如:
let formatter = NSNumberFormatter()
formatter.locale = NSLocale(localeIdentifier: "it_IT")
我正在处理从 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
}
但它不能格式化小数。
正确的做法是什么?
您只需要正确配置 NSNumberFormatter
。
let formatter = NSNumberFormatter()
formatter.groupingSeparator = "˙"
formatter.decimalSeparator = ","
formatter.usesGroupingSeparator = true
formatter.minimumFractionDigits = 2
测试
formatter.stringFromNumber(1300) // "1˙300,00"
虽然设置特定的 decimalSeparator
和 groupingSeparator
确实有效,但这并不是您想要的最佳方式。
NSNumberFormatter
总是根据当前语言环境选择格式。如果区域设置为英语(通常为 en-US
),则小数点分隔符为 ,
,分组分隔符为 .
.
这样,如果美国用户打开应用程序,他们将看到适合他们的正确格式的数字。如果欧洲的用户打开该应用,他们还会看到格式正确的数字(根据他们的设备设置指定)。
如果您真的希望应用程序具有一种特定的数字格式,您可以明确设置语言,例如:
let formatter = NSNumberFormatter()
formatter.locale = NSLocale(localeIdentifier: "it_IT")