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
相关推荐
r0ad20 小时前
读诗的时候我却使用了自己研发的Chrome元素截图插件
前端·javascript·chrome
知识分享小能手21 小时前
jQuery 入门学习教程,从入门到精通, jQuery在HTML5中的应用(16)
前端·javascript·学习·ui·jquery·html5·1024程序员节
七号练习生.c21 小时前
JavaScript基础入门
开发语言·javascript·ecmascript
baozj21 小时前
🚀 手动改 500 个文件?不存在的!我用 AST 撸了个 Vue 国际化神器
前端·javascript·vue.js
molly cheung1 天前
FetchAPI 请求流式数据 基本用法
javascript·fetch·请求取消·流式·流式数据·流式请求取消
Mintopia1 天前
🧠 量子计算对AIGC的潜在影响:Web技术的未来可能性
前端·javascript·aigc
忧郁的蛋~1 天前
.NET异步编程中内存泄漏的终极解决方案
开发语言·前端·javascript·.net
水月wwww1 天前
vue学习之组件与标签
前端·javascript·vue.js·学习·vue
顾安r1 天前
11.8 脚本网页 塔防游戏
服务器·前端·javascript·游戏·html
爱吃甜品的糯米团子1 天前
JavaScript 正则表达式:选择、分组与引用深度解析
前端·javascript·正则表达式