浅谈iOS 关于小数精确计算(NSDecimalNumber)
做了好一段时间的金融产品,对数字是要非常敏感,差个零点零几都不行,精确度是要非常重视的,将后台传给我的floatValue转成NSString,一直没发现问题,最近项目有关个人账户的资产显示,发现总是和web和android有点误差,百思不得其解,在Stack Overflow上面问了一下,发现了NSDecimalNumber这个API,这个类为OC程序提供定点算法功能,它被设计不会损失精度并且可预先设置凑整规则的10进制计算,它比浮点数更好去表达货币,作为代价,它的计算相对复杂,相对耗时。2017-08-02 15:41:25.620 DecimalNumber[3014:155231] 1000000.000000明显已经已经失真了。那么我们换个类型,把精度调高,会不会好点呢?然并卵,2017-08-02 16:16:32.293 DecimalNumber[3144:167125] 999999.967648这都是什么鬼,数学白学了。下面通过NSDecimalNumber提供计算方式,这是官方建议的货币计算API,精确度比较高,对乘除计算都有单独的接口提供。
用户评论