bug之浮点数精度求和计算

news/2024/12/16 4:48:07/
  • 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. 将浮点数转换成整数,返回整数和倍数,计算后再缩小为小数;

http://www.ppmy.cn/news/1555497.html

相关文章

智能引导小车充电系统设计(论文+源码)

1总体方案设计 在16*16点阵LED字符显示器的设计中,系统总体框架如图2.4所示,包括单片机主控模复位电路模块、晶振电路模块、按键电路模块、LED点阵驱动电路模块,蓝牙模块等构成。系统功能实现主要是利用系统在软件程序编写过程中&#xff0c…

UE4_贴花_贴花基础知识一

贴花可以将材料和各种材料元素投影到表面上。您可以使用它们来添加独特的效果。贴花 是一种可以投射到网格体(包括静态网格体和骨骼网格体)上的材质。无论这些网格体的移动性(Mobility)是静态(Static)还是可…

数据结构 (37)外排序的基本方法

前言 外排序(External Sorting)是指处理那些无法完全加载到内存中的数据集时所使用的排序方法。由于数据量巨大,无法一次性全部放入内存,因此需要使用外部存储设备(如磁盘)来辅助排序过程。外排序的基本方法…

软包拆垛自动化:深度视觉与智能算法如何重塑行业格局?

在现代工业生产和物流场景中,自动化拆垛已成为提升效率和降低人工操作风险的关键环节。特别是在涉及软包、纸箱、麻包袋等不规则物体的行业,如塑胶粒子、化肥、食品加工等。 软包拆垛的行业挑战 软包、纸箱等不规则物体在堆垛时由于形状不规则、材质多…

UE4_贴花_贴花基础知识二

五、多表面投射 在本示例中,你将了解贴花如何在多个表面上进行投射。请注意,如果表面朝向与投射方向较为平行,贴花投射时必然会产生一些拉伸。另外,请记住,贴花可以在包括骨骼网格体在内的静态和动态网格体上进行投射。…

Python爬虫之使用xpath进行HTML Document文档的解析

响应有两种:JSON数据和HTML页面,对于后者就需要进行解析HTML Documen得到我们需要的信息。 ① xpath使用 可以提前安装xpath插件,也可以自己从HTML源码解析。 (1)打开chrome浏览器 (2)点击右…

基于python+django+vue的高校成绩管理系统

系统展示 管理员后台界面 教师界面 学生界面 系统背景 随着教育信息化的不断推进,传统的手工成绩管理方式已经无法满足现代教育管理的需求。传统管理方式不仅效率低下,还容易出错,且难以实现数据的集中化管理和安全访问控制。因此&#xff0c…

Datax-web 添加达梦数据库

环境JDK1.8 node 10.24.1 python 2.X Datax分支tag202309版本 后端项目 分支使用2.1.3-alpha-releaseGitHub - WeiYe-Jing/datax-web: DataX集成可视化页面,选择数据源即可一键生成数据同步任务,支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源…