Swift 使用NumberFormatter精度,大于或等于一千万的数字
这是我的密码Swift 使用NumberFormatter精度,大于或等于一千万的数字,swift,nsnumberformatter,Swift,Nsnumberformatter,这是我的密码 extension Float { func decimalString(maxPrecision: UInt) -> String { let formatter = NumberFormatter() formatter.numberStyle = .decimal formatter.maximumFractionDigits = Int(maxPrecision) return formatter
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))")
打印12345680,但预期为12345678.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
使用
Double
代替,Float
不够精确。@luk2302谢谢!!!!