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
相关推荐
千里马-horse9 分钟前
AsyncContext
开发语言·前端·javascript·c++·napi·asynccontext
转转技术团队11 分钟前
基于微前端 qiankun 多实例保活的工程实践
前端·javascript·前端工程化
业精于勤的牙15 分钟前
最长特殊序列(一)
java·javascript·数据结构
期待のcode27 分钟前
JWT令牌
前端·javascript·spring boot·安全
南山安36 分钟前
LangChain 入门实战:从零搭建 AI 应用工作流
javascript·面试·langchain
星月心城37 分钟前
八股文-JavaScript(第二天)
开发语言·javascript·ecmascript
Aevget41 分钟前
DevExpress JS & ASP.NET Core v25.1新版亮点 - 新增AI文本编辑功能
javascript·人工智能·asp.net·界面控件·devexpress·ui开发
xiaoxue..42 分钟前
爬楼梯问题:从递归到动态规划再到闭包的进化之路
javascript·算法·面试·动态规划
C_心欲无痕1 小时前
vue3 - 响应式数ref与reactive的深度解析
前端·javascript·vue.js
于谦1 小时前
✨ feat(app1,pkg1): monorepo生成规范化提交信息的最优解 - committier
javascript·github·代码规范