这是我的代码
extension Float {
func decimalString(maxPrecision: UInt) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = Int(maxPrecision)
return formatter.string(from: NSNumber(value: self)) ?? ""
}
}
但是有一个问题
let a: Float = 12345678.1
print("(a.decimalString(maxPrecision: 2))")
打印12,345,680,但期望12,345,678.1怎么了!?!
Double
代表一个64位的浮点数。
Float
代表一个32位的浮点数。
因此Double
更精确,而是使用此代码:
extension Double {
func decimalString(maxPrecision: UInt) -> String {
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = Int(maxPrecision)
return formatter.string(from: NSNumber(value: self)) ?? ""
}
}
let a: Double = 12345678.1
print("(a.decimalString(maxPrecision: 2))") // 12,345,678.1