美文网首页
Swift中string转double过程中出现的准确度问题

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

作者: Janise001 | 来源:发表于2020-04-06 18:19 被阅读0次

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)

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

相关文章

网友评论

      本文标题:Swift中string转double过程中出现的准确度问题

      本文链接:https://www.haomeiwen.com/subject/yuobphtx.html