您当前的位置: 首页 >  Python

每日出拳老爷子

暂无认证

  • 3浏览

    0关注

    135博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

如何彻底解决Python中精确小数位数计算的问题

每日出拳老爷子 发布时间:2021-08-06 14:34:46 ,浏览量:3

背景:

为部门内部开发金融相关工具涉及计算,要求计算结果精度准确。但是Python由于计算机特性等固有原因,往往导致小数存在偏差。研究了解决此问题的方法。

误差原因
  • 二进制计算后转为十进制,存在浮点误差,一般从小数位16位开始出现。
  • Python自带round函数并非金融常用四舍五入,而是银行家算法也就是四舍六入五留双,需要转换为精确的四舍五入。
解决方案
  • 对计算过程中出现的所有数值进行截位,具体的截位方法和长度可以自行判定,在浮点误差之前截位即可,我一般是截10位。这样可以抵消掉浮点误差。
  • 具体的截位可以使用decimal类型的quantitize方法,注意四舍五入方法也需要指定为“ROUND_HALF_UP”
  • 最终展示时再次使用Decimal类的Quantize方法按需要保留小数。
关注
打赏
1657016083
查看更多评论
立即登录/注册

微信扫码登录

0.0342s