通货
numberStyle
总是在两位数后返回小数点。因此,如果要实现目标,应该自己修改输出字符串。
请检查示例代码:
let number1: Double = 123.908392857
let number2: Int = 123
let number3: Float = 123.00
let formatter = NumberFormatter()
formatter.numberStyle = .currency
formatter.currencySymbol = "â¬"
let num1 = formatter.string(from: NSNumber(value: number1))! // Output â¬123.91
let num2 = formatter.string(from: NSNumber(value: number2))! // Output â¬123.00
let num3 = formatter.string(from: NSNumber(value: number3))! // Output â¬123.00
print("\(num1) \(num2) \(num3)")
// This is trick
let newNum1 = trimString(string: num1) // Output â¬123.91
let newNum2 = trimString(string: num2) // Output â¬123
let newNum3 = trimString(string: num3) // Output â¬123
print("\(newNum1) \(newNum2) \(newNum3)")
trimString
是一个简单的微调功能,你可以把它放在
String extension
或者任何你想要的地方。
func trimString(string: String) -> String {
if string.hasSuffix(".00") {
return String(string.dropLast(3))
}
else {
return string
}
}
你可能会问为什么
alwaysShowsDecimalSeparator
那就不行了?它是为
.decimal
数字样式
和默认值
decimalSeparator
为“”