HandyJSON iOS 15 NumberFormatter number 转 string 丢失精度问题

w1jd8yoj  于 4个月前  发布在  iOS
关注(0)|答案(4)|浏览(112)

IOS 14 上没问题,iOS 15 上, Source/BuiltInBasicType.swift 第 120 行,maximumFractionDigits 设置的 16,导致 number 转 string , 6979050226255138061 会转换成 "6979050226255130000"。可以将 maximumFractionDigits 改小点,比如 10。

tktrz96b

tktrz96b1#

复现代码:
let formatter = NumberFormatter()
formatter.usesGroupingSeparator = false
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 16
let string = formatter.string(from: NSNumber.init(value: 6979050226255138061))
对比 iOS 14 和 iOS 15 输出结果是不一致的

vhipe2zx

vhipe2zx2#

同样遇到了,求大佬解决

332nm8kg

332nm8kg3#

同样遇到了,求大佬解决

可以将 maximumFractionDigits 改小点,比如 10

qni6mghb

qni6mghb4#

let formatter = NumberFormatter()
        formatter.numberStyle = .decimal
        formatter.minimumFractionDigits = 18
        formatter.maximumFractionDigits = 18
        formatter.roundingMode = .floor
        
        let number = NSDecimalNumber(string: "6.381569271192148411")
        let result = formatter.string(from: number)
        print(result!)

iOS 15: 6.381569271192150000
iOS 14: 6.381569271192148411

遇到类似的问题,在不改动 maximumFractionDigits 的情况下怎么修复这个问题啊?Thanks♪(・ω・)ノ

相关问题