这是我的代码
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 。
Float
表示一个 32 位 float 。
所以 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
关于swift - 大于或等于一千万的数字,使用 NumberFormatter Precision,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44342617/