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. 将浮点数转换成整数,返回整数和倍数,计算后再缩小为小数;
相关推荐
hui函数4 分钟前
如何解决 pip install 代理报错 SOCKS5 握手失败 ReadTimeoutError 问题
bug·pip
f***24112 小时前
Bug悬案:程序员破案实录
bug
一条咸鱼_SaltyFish20 小时前
[Day10] contract-management初期开发避坑指南:合同模块 DDD 架构规划的教训与调整
开发语言·经验分享·微服务·架构·bug·开源软件·ai编程
雒珣1 天前
qt界面和图片疯狂变大的bug问题
开发语言·qt·bug
天才测试猿1 天前
软件测试之bug分析定位技巧
软件测试·python·selenium·测试工具·职场和发展·测试用例·bug
zhz52142 天前
后端代码规范文档示例
重构·bug·代码规范·结对编程
luming-022 天前
java报错解决:sun.net.utils不存
java·经验分享·bug·.net·intellij-idea
星月心城2 天前
Element Plus 2.7.5 的 datetimerange 存在 is-disabled 误判 Bug(头部年份 / 月份被错误禁用)
bug
C语言不精2 天前
解决ESP出现MD5报错或验证芯片bug
嵌入式硬件·bug·esp32
萧曵 丶3 天前
Java 常用运行参数配置及实际业务详解
java·bug·优化·问题排查·生产问题