前端js多个小数相加出现无限循环小数的解决办法
做项目的时候,发现多个小数相加值明明是100,但js 函数计算后确实99.9999,无限循环小数。恰好在前端大全的公众号上看到了一篇文章解释了这个问题,如下图:
文章链接:https://mp.weixin.qq.com/s/I6uOfr9ybx3-Q4nwdWJvTw
大致意思是:在JS内部所有的计算都是以二进制方式计算的。 所以运算 0.1+ 0.2 时要先把 0.1和 0.2 从十进制转成二进制,转成二进制后是无穷的,所以在运算中出现了精度丢失问题,导致最后结果不准确。
以下是我根据当前网上两个数相加的版本,改造成多个小数相加后在项目使用的代码示例:
add: function () {const arr = [0.1, 0.2]const fieldArr = []for (var i = 0; i < arr.length; i++) {var m, field;try {field = arr[i].toString().split('.')[1].length;} catch (e) {field = 0;}fieldArr.push(field)}m = Math.pow(10, Math.max(...fieldArr));let add = 0arr.forEach(function (item) {add = add + item * m})let sum = Math.round(add) / mconsole.log(sum);},
前端js多个小数相加出现无限循环小数的解决办法相关推荐
- 前端面试查漏补缺--(三) 跨域及常见解决办法
前言 本系列最开始是为了自己面试准备的.后来发现整理越来越多,差不多有十二万字符,最后决定还是分享出来给大家. 为了分享整理出来,花费了自己大量的时间,起码是只自己用的三倍时间.如果喜欢的话,欢迎收藏 ...
- vue.js 引用背景图 background 无效的3种解决办法
#vue.js项目中,出现css调用background背景图无效?如何解决? 或者调用<img>标签,也无效果? 直接上代码,自行对比查找一下: 效果图预览 1. 正确的代码,示例如下: ...
- win10修改系统配置处理器引导参数后,系统无限蓝屏解决办法
win10修改系统配置处理器引导参数后,系统无限蓝屏解决办法 0:开机时先按f8进入安全模式,在进入命令提示符 1.进入 启动修复 的 命令提示符(最好是使用有管理员权限的,不过普通用户我也每试过), ...
- dell计算机一直重启,戴尔笔记本无限重启具体解决办法
戴尔笔记本无限重启怎么办?戴尔笔记本虽然性能良好,但若使用时间长了也难免会出现问题,若是戴尔笔记本无限重启该如何解决呢?今天小编要给大家讲解的便是戴尔笔记本无限重启的解决方法,一起来看看吧. 戴尔笔记 ...
- 学习笔记_关于switch在whlie中无限循环的解决办法_C语言
学习笔记_关于switch在whlie中无限循环的解决办法_C语言 今天在做作业的时候突然发现一个问题 #include<stdio.h> int main() {int a;while( ...
- vue+three.js加载本地stl模型无法显示的解决办法
先放代码 <template><div><div id="container"></div></div> </te ...
- 装了驱动人生后无限重启的解决办法
由于楼主在主机插入usb 转串口的线,端口不可用,所以在网上下载了驱动人生,然后就悲剧了.. 打开解压安装就去做别的了,过了几秒Windows提示说电脑遇到问题需要重启,重启后还是要重启无限循环 解决 ...
- JS调用浏览器不能全屏适应A4纸解决办法
引入JQ:<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script&g ...
- 浏览器控制台无限debugger与解决办法
什么是无限debugger 某一天,我在用控制台检查network信息时 遇到了很怪的一幕,一旦打开控制台就会自动跳转到debug调试页面 firefox浏览器甚至会迅速奔溃 chrome中可以看到这 ...
最新文章
- Android10剪贴板,剪纸堆 Clip Stack - 轻量级剪贴板管理程序(支持 Android 10)
- ALV标准范例Demo汇总
- android loading封装_我们经常用的Loading动画居然还有这种姿势
- 信管家源代码c语言,用队列实现按层次创建二叉树的源代码,最好是C语言
- python os模块打开文件_Python 文件操作之OS模块
- mysql整段注释_MySQL 添加注释(comment)
- java jdk的作用_Java JDK环境配置及配置作用说明
- linux 用户管理、权限管理
- JavaScript学习笔记——对表单的操作
- 3 款非常实用的 Node.js 版本管理工具
- 立创eda学习笔记二十九:原理图转PCB
- java节假日算法_java处理节假日和工作时间的工具类
- Layer.js实现表格溢出内容省略号显示,悬停显示全部
- 数论学习四之——威尔逊定理
- Android Toast 使用
- AT88SC0104C加密芯片的工作原理
- word文章目录页码问题
- Qt实现的一些小软件
- HTC Lengend G6上网-彩信设置
- ffprobe获取视频帧信息中的pkt_pts、pkt_pts_time
热门文章
- 计算不同高度下的大气密度
- MySql如何将远程数据库复制到本地
- win10打印机脱机提示无法正常进行打印怎么办
- 第六届“NOI与中小学计算机教育”论坛举办通知
- HTML的学习总结(一)
- 实验吧-密码学-传统知识+古典密码(六十甲子年)
- MySQL查询被选修的课程_sql语句查询没有被学生选修过的课程(即课程号没有在sc表中出现过)的名称....
- 计算机网络---IP数据报
- 实在智能RPA助你提升电商运营效率,快速起爆店铺
- Visual Studio 2015中使用Git