swift - 大于或等于一千万的数字,使用 NumberFormatter Precision

标签 swift nsnumberformatter

这是我的代码

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/

相关文章:

swift - 手动设置 UI 按钮边框宽度 - Swift 编辑器

swift - 不同数据的两个 Collection View 还是一个?

ios - Collectionview 和分页

ios - 使用@testable 时“模块未编译用于测试”

iphone - 如何使用不同的货币符号而不是设备本地货币符号?

ios - 为 NSNumber 值设置精度

ios - swift 相当于 typedef

objective-c - Objective-C 中按位数智能舍入

cocoa-touch - 如何配置 NSNumberFormatter 以显示不带前导零的小数部分?

iPhone : Textfields and NSNumberFormatter