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. 将浮点数转换成整数,返回整数和倍数,计算后再缩小为小数;
相关推荐
一只自律的鸡17 小时前
【bug日记】python找不到包
bug
灵性花火17 小时前
记录Qt的多个bug
qt·bug
ss27317 小时前
手写MyBatis第96弹:异常断点精准捕获MyBatis深层BUG
java·开发语言·bug·mybatis
鹓于2 天前
开发Bug——U盘插入断网
bug
今天又在摸鱼3 天前
bug日记
bug
大Mod_abfun4 天前
24H2动态壁纸无法正常嵌入(针对vb.net的紧急加更)
bug·桌面壁纸·24h2
十步杀一人_千里不留行7 天前
和 AI 一起修 Bug 心得体会
人工智能·bug·ai编程
花王江不语7 天前
改bug的一些体会
bug
zimoyin7 天前
Linux 程序使用 STDOUT 打印日志导致程序“假死”?一次线上 Bug 的深度排查与解决
linux·运维·bug
城下秋草8 天前
趣谈Bug -500英里邮件问题
bug