Swift中string转double过程中出现的准确度问题

2020-04-06  本文已影响0人  Janise001

double计算时会出现一些精准失真问题,尤其在计算百分比和手续费用过程中较为多,需要使用到NSDecimalNumber计算,基本不使用Double,保证正确率

通常我们遇到的百分比的情况,如到手的数据是0.005567,需要转换为0.5567%,具体处理方式如下:

// double计算时需要计算精确度,防止出现无限循环
        let percentNumber = NSDecimalNumber(string: percentStr ?? "")
        let percentShow = percentNumber.multiplying(by: 100)
        let behavior = NSDecimalNumberHandler(roundingMode: .plain, scale: 2, raiseOnExactness: false, raiseOnOverflow: false, raiseOnUnderflow: false, raiseOnDivideByZero: false)
        let resultshow = percentShow.rounding(accordingToBehavior: behavior)
        logDebug("0.005567转换为百分比格式 -> \(resultshow.stringValue)%")

如不需要转换为百分比格式,仅为限制数据展示正确性,100改为1即可:

percentNumber.multiplying(by: 1)

这是我在网上找到的处理方式,原本指向了一个作者的地址,但是好像无效了,我就直接上代码了,如有侵权联系我,我改。

上一篇 下一篇

猜你喜欢

热点阅读