0.1 + 0.2 为什么不等于0.3

首先,对于不同的进制数值系统,分母为多少时能除干净?

答案是,以十进制为例,质因子为2、5,因此分母为2、5的倍数都可以被除干净,例如1/2、1/4、1/5、1/8和1/10都可以被除干净,相反,1/3、1/6和1/7结果都是循环小数。

那么二进制时,质因子为2,所以1/2、1/4和1/8都可以被精确表示,1/5或者1/10就变成了循环小数

因此0.1+0.2!=0.3

除不干净即无法被精确表达

可以使用ES6提供的 Number.EPSILON 进行判断 Math.abs(arg1 - arg2) < Number.EPSILON

复制代码
function numberepsilon(arg1,arg2){                   
  return Math.abs(arg1 - arg2) < Number.EPSILON;        
}        

console.log(numberepsilon(0.1 + 0.2, 0.3)); // true
相关推荐
十五_在努力几秒前
参透 JavaScript —— 异步编程与Promise
前端·javascript·promise
十五_在努力5 分钟前
参透 JavaScript —— 图解 Event Loop 事件循环
前端·javascript
十五_在努力11 分钟前
参透JavaScript —— 判断数据类型的四种方式
前端·javascript
依辰18 分钟前
小程序自动化构建与版本管理方案优化
前端·javascript·微信小程序
Geoffwo18 分钟前
取消echarts地图悬浮时默认黄色高亮
前端·javascript·echarts
我是谁谁19 分钟前
Canvas 高级应用与实战项目<3>
javascript·css·canvas
前端大卫26 分钟前
🔥 如何“为所欲为”地渲染页面:优雅拦截 Fetch 和 XMLHttpRequest!
前端·javascript
苏州第一深情27 分钟前
【vue+leaflet】自定义控件(五)
前端·javascript·vue.js
日升29 分钟前
Electron 开发:获取当前客户端真实 IP
前端·javascript·electron
小钰能吃三碗饭35 分钟前
第五篇:【React 性能优化秘籍】让你的应用丝滑流畅,告别卡顿!
前端·javascript·react.js