bug之浮点数精度求和计算

  • bug描述:电商项目多件商品进行结算时,总金额出现微小偏差;如0.1+0.2=0.3吗?还有可能展示成0.30000000000000004;
  • bug原因:由于计算过程中使用浮点数运算,计算机只识别二进制,所以先把0.1和0.2转换成二进制;0.1 => 0.0001 1001 1001 1001...(无限循环),0.2 => 0.0011 0011 0011 0011...(无限循环) ,对于无限循环小数,计算机进行舍入处理,进行双精度浮点数的小数部分最多支持 52 位,所以两者相加之后得到这么一串 0.0100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 ,因浮点数小数位的限制而截断的二进制数字,这时候,我们再把它转换为十进制,就成了 0.30000000000000004;
  • 解决方案
  1. python中的decimal模块
  2. 将浮点数转换成整数,返回整数和倍数,计算后再缩小为小数;
相关推荐
欢脱的小猴子1 小时前
VUE3加载cesium,导入czml的星座后页面卡死BUG 修复
前端·vue.js·bug
boonya2 天前
国内外常用的免费BUG管理工具选型
bug
10岁的博客2 天前
Bug排查日记:高效记录与解决之道
bug
彭刷子2 天前
【Bug】Nexus无法正常启动的五种解决方法
bug·nexus
黑客飓风2 天前
从基础功能到自主决策, Agent 开发进阶路怎么走?
面试·log4j·bug
mahuifa2 天前
C++(Qt)软件调试---bug排查记录(36)
c++·bug·软件调试
Kyln.Wu2 天前
【python实用小脚本-205】[HR揭秘]手工党逐行查Bug的终结者|Python版代码质量“CT机”加速器(建议收藏)
开发语言·python·bug
2501_930104043 天前
Bug 排查日记:打造高效问题定位与解决的技术秘籍
bug
weixin_377634843 天前
【YOLO】数据增强bug
yolo·bug