JS中0.1加0.2 不等于0.3
原因:浮点数运算的精度所致,属于算术误差
计算机只认识二进制,运算时需将其他进制的数值转为二进制再进行计算。而浮点数用二进制表达是无穷的:
在0.1与 0.2 相加的时候,会先转换为二进制,0.1与0.2转换为二进制的时候尾数会发生无限循环,然后进行对阶运算,js引擎对二进制进行截断,所以造成精度丢失;
解决
规避掉这类小数计算时的精度问题,将浮点数(float)转换为整数(int)类型进行计算,整数都是可以精确的计算出结果;例如:0.1+0.2 => (0.110+0.210)/10 将浮点数化为整数计算将浮点数乘以10的N次方,再除以10的N次方。
使用第三方库,如Math.js、big.js等
toFixed方法
var c = (0.2+0.1).toFixed(2)
console.log©;
JS中0.1加0.2 不等于0.3相关推荐
- 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session
1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...
- android 8.0 一加5,一加5如何升级安卓8.0 一加5升级安卓8.0图文教程
2017-12-26 17:18:05 一加5如何升级安卓8.0 一加5升级安卓8.0图文教程 标签:一加5,一加5升级,一加5 8.0刷机包 一加5如何升级安卓8.0,rom基地小编今天带来一加5升 ...
- vue main.js中引入js_手把手教你深入Vue3.0(Vue-cli4)项目打包性能优化实践
记录了自己的博客在禁用缓存的情况下,从八九秒加载时间到最终985ms的优化实践,开启缓存的情况下能达到138ms的访问速度 本人的个人博客采用的是Vue-cli4.1.2 + typescript构建 ...
- js中for(i in array)和for(i=0;i<array.length;i++)之间的坑
前情提要 刚刚接触到js写for循环的时候,觉得for(i in array)这种格式简直是非常直观,比三段论的for循环好写得多.直到遇到了一个坑,事情是这样的: 最开始的网页中,鉴于方便,清一色使 ...
- 小程序登录问题--登录函数getUserInfo()写在app.js中,首次加载无法获取后台处理过的用户的信息,刷新一次后就可以获取的解决
遇到这个问题,是因为自己需要写个登录的功能.需要用户自己点击登录后,才登录. 登录的功能函数写在app.js中,现在需要在user.js中使用这个全局的函数,来登录并获取用户信息.但是出现的问题就是, ...
- js中定义变量加var和不加var的区别
这个问题其实我在面试的时候有被问到过,当时我记得我回答的很模糊,面试官看到我好像不太清楚,又问我是不是可以不加var定义变量... 正好昨天做项目的时候想到这个问题,觉得这种细节上的问题才是拉开差距的 ...
- 一加5t升级android8.0,一加5/5T升级Android8.0 这些强大的功能用起来太爽了!
原标题:一加5/5T升级Android8.0 这些强大的功能用起来太爽了! 众所周知,一加在系统版本更新方面非常积极,更新Android版本不仅能够增加系统的功能,在安全性,稳定性,流畅性等各方面都会 ...
- android5.0刷机,一加手机怎么升级安卓5.0 一加手机刷Android 5.0教程
谷歌今天正式发布了最新的安卓5.0正式版,作为一次非常大的系统升级,安卓5.0带来了非常多明显的升级,体验上相比安卓4.4要精进不少.在众多手机纷纷向Android 5.0发起冲击之时,日一加手机官方 ...
- matlab中 cos(pi/2) sin(pi)不等于0怎么办
发现matlab中应该为零的 cos(pi/2). sin(pi)都为一个极小的值 查了半天,看到有人 关于MATLAB中cos(pi2)不等于0的问题_Azahaxia的博客-CSDN博客 但尝试 ...
- js中遍历数组加到新数组_js数组遍历:JavaScript如何遍历数组?
什么是数组的遍历? 操作数组中的每一个数组元素. 使用for循环来遍历数组 因为数组的下标是连续的,数组的下标是从0开始. 我们也可以得到数组的长度. 格式:for(var i=0;i 数组变量名[i ...
最新文章
- 绩效管理是什么?怎么做绩效管理?
- caddy 获取SSL证书报错解决:failed to obtain certificate: acme: Error - One or more domains had a problem
- 2017-10-6Linux基础知识(4)安装Linux及设置语言环境
- DOM_06之定时器、事件、cookie
- ubuntu 12.04 联想thinkpad e430 安装wifi驱动
- fguillot json rpc_hyperf与go基于jsonrpc2.0通信
- ubuntu下用apt-get安装软件时网速太慢的解决办法
- 影驰名人堂送的机器人_玩转GTX 1080Ti名人堂显示屏 影驰全新魔盘使用教程
- Xamarin效果第十七篇之AR GIS
- tiny4412(用户手册及芯片手册)
- C++ 通讯录设计(一)
- POJ-1904-King's Quest(强连通图)
- Progressive Web App:模仿原生应用的Web应用
- Mysql常用的存储引擎
- 短视频完美开源源码 后台+APP双端源码
- useradd 命令的常见用法
- 母亲的牛奶 Mother's Milk(usaco)
- batchnomal_Linux Kernel 排程機制介紹 ? Loda's blog
- 【蓝桥杯经典数学题】杨辉三角形
- python 游戏按键精灵 PyDirectInput介绍