原因:浮点数运算的精度所致,属于算术误差


计算机只认识二进制,运算时需将其他进制的数值转为二进制再进行计算。而浮点数用二进制表达是无穷的:
在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相关推荐

  1. 模块加载及第三方包:Node.js模块化开发、系统模块、第三方模块、package.json文件、Node.js中模块的加载机制、开发环境与生产环境、cookie与session

    1.Node.js模块化开发 1.1 JavaScript开发弊端 JavaScript 在使用时存在两大问题,文件依赖和命名冲突. 1.2 软件中的模块化开发 一个功能就是一个模块,多个模块可以组成 ...

  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升 ...

  3. vue main.js中引入js_手把手教你深入Vue3.0(Vue-cli4)项目打包性能优化实践

    记录了自己的博客在禁用缓存的情况下,从八九秒加载时间到最终985ms的优化实践,开启缓存的情况下能达到138ms的访问速度 本人的个人博客采用的是Vue-cli4.1.2 + typescript构建 ...

  4. js中for(i in array)和for(i=0;i<array.length;i++)之间的坑

    前情提要 刚刚接触到js写for循环的时候,觉得for(i in array)这种格式简直是非常直观,比三段论的for循环好写得多.直到遇到了一个坑,事情是这样的: 最开始的网页中,鉴于方便,清一色使 ...

  5. 小程序登录问题--登录函数getUserInfo()写在app.js中,首次加载无法获取后台处理过的用户的信息,刷新一次后就可以获取的解决

    遇到这个问题,是因为自己需要写个登录的功能.需要用户自己点击登录后,才登录. 登录的功能函数写在app.js中,现在需要在user.js中使用这个全局的函数,来登录并获取用户信息.但是出现的问题就是, ...

  6. js中定义变量加var和不加var的区别

    这个问题其实我在面试的时候有被问到过,当时我记得我回答的很模糊,面试官看到我好像不太清楚,又问我是不是可以不加var定义变量... 正好昨天做项目的时候想到这个问题,觉得这种细节上的问题才是拉开差距的 ...

  7. 一加5t升级android8.0,一加5/5T升级Android8.0 这些强大的功能用起来太爽了!

    原标题:一加5/5T升级Android8.0 这些强大的功能用起来太爽了! 众所周知,一加在系统版本更新方面非常积极,更新Android版本不仅能够增加系统的功能,在安全性,稳定性,流畅性等各方面都会 ...

  8. android5.0刷机,一加手机怎么升级安卓5.0 一加手机刷Android 5.0教程

    谷歌今天正式发布了最新的安卓5.0正式版,作为一次非常大的系统升级,安卓5.0带来了非常多明显的升级,体验上相比安卓4.4要精进不少.在众多手机纷纷向Android 5.0发起冲击之时,日一加手机官方 ...

  9. matlab中 cos(pi/2) sin(pi)不等于0怎么办

    发现matlab中应该为零的 cos(pi/2). sin(pi)都为一个极小的值 查了半天,看到有人  关于MATLAB中cos(pi2)不等于0的问题_Azahaxia的博客-CSDN博客 但尝试 ...

  10. js中遍历数组加到新数组_js数组遍历:JavaScript如何遍历数组?

    什么是数组的遍历? 操作数组中的每一个数组元素. 使用for循环来遍历数组 因为数组的下标是连续的,数组的下标是从0开始. 我们也可以得到数组的长度. 格式:for(var i=0;i 数组变量名[i ...

最新文章

  1. 绩效管理是什么?怎么做绩效管理?
  2. caddy 获取SSL证书报错解决:failed to obtain certificate: acme: Error - One or more domains had a problem
  3. 2017-10-6Linux基础知识(4)安装Linux及设置语言环境
  4. DOM_06之定时器、事件、cookie
  5. ubuntu 12.04 联想thinkpad e430 安装wifi驱动
  6. fguillot json rpc_hyperf与go基于jsonrpc2.0通信
  7. ubuntu下用apt-get安装软件时网速太慢的解决办法
  8. 影驰名人堂送的机器人_玩转GTX 1080Ti名人堂显示屏 影驰全新魔盘使用教程
  9. Xamarin效果第十七篇之AR GIS
  10. tiny4412(用户手册及芯片手册)
  11. C++ 通讯录设计(一)
  12. POJ-1904-King's Quest(强连通图)
  13. Progressive Web App:模仿原生应用的Web应用
  14. Mysql常用的存储引擎
  15. 短视频完美开源源码 后台+APP双端源码
  16. useradd 命令的常见用法
  17. 母亲的牛奶 Mother's Milk(usaco)
  18. batchnomal_Linux Kernel 排程機制介紹 ? Loda's blog
  19. 【蓝桥杯经典数学题】杨辉三角形
  20. python 游戏按键精灵 PyDirectInput介绍

热门文章

  1. excel翻译功能怎么用呢?有什么excel翻译英文的方法?
  2. win7笔记本变wifi路由
  3. 影视混剪类短视频内容创作技巧分享,如何剪辑配音?
  4. js 的内存,堆和栈
  5. mysql federated 缺点_mysql federated 慢
  6. redis存储java对象_Redis存储java对象
  7. 集装箱交接清单(CTNJJD)
  8. golang实现判断链表是否有环
  9. 该不该把“不加班”写入简历中?
  10. 猫狗大战一触即发,双11京东品质战略对掐阿里,更为消费升级