使用数字形式的精度,数量大于或等于一千万



这是我的代码

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

最新更新