这是我的代码
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 什么错了!?!
答案 0 :(得分: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