博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js解决0.1+0.2==0.3的问题的几种方法
阅读量:7046 次
发布时间:2019-06-28

本文共 742 字,大约阅读时间需要 2 分钟。

js解决0.1+0.2==0.3的问题的几种方法

JavaScript有7种基本类型分别是: Undefined, Null, Boolean, String, Number, Symbol, Object.

对于JS中的Number类型, 不区分整数和浮点数, 浮点数的精度远远不如整数, 首先先看一下为什么会出现这个问题, 根据双精度浮点数的定义, Number类型的有效整数范围是-0XFFFFFFFFFFF至0X1FFFFFFFFFF,所以无法精确到超过这个范围的整数.

解决办法

1.ES6提供的Number.EPSILON方法

function numbersequal(a,b){ return Math.abs(a-b)

考虑兼容性的问题了,在chrome中支持这个属性,但是IE并不支持(笔者的版本是IE10不兼容),所以我们还要解决IE的不兼容问题。

Number.EPSILON=(function(){   //解决兼容性问题        return Number.EPSILON?Number.EPSILON:Math.pow(2,-52);      })();//上面是一个自调用函数,当JS文件刚加载到内存中,就会去判断并返回一个结果,相比if(!Number.EPSILON){  //   Number.EPSILON=Math.pow(2,-52);  //}这种代码更节约性能,也更美观。function numbersequal(a,b){     return Math.abs(a-b)

2.把计算数字 提升 10 的N次方 倍 再 除以 10的N次方。N>1.

(0.1*1000+0.2*1000)/1000==0.3//true

转载地址:http://ndkol.baihongyu.com/

你可能感兴趣的文章
ssh三大框架简单整合,struts2整合JasperReport报表、图表,解决HTML显示图片不出来,PDF中文不显示的问题...
查看>>
XML基础知识
查看>>
telnet: Unable to connect to remote host: No route to host处理过程
查看>>
我的友情链接
查看>>
单元测试Struts2的Action(包含源码)
查看>>
简要总结最近遇到的5个问题
查看>>
我的友情链接
查看>>
高校专业机房使用VMware Player解决方案
查看>>
我的友情链接
查看>>
Centos Development Tools 安装
查看>>
1.1.2 C++发展历程
查看>>
我的友情链接
查看>>
awk笔记
查看>>
apache使用.htaccess进行基于文件扩展名的访问控制
查看>>
Hystrix降级技术解析-Fallback
查看>>
Windows XP 禁用防火墙、系统升级、系统还原指南
查看>>
让你的电脑变成wifi
查看>>
xshell 隧道透传
查看>>
zabbix-server添加zabbix-proxy
查看>>
iostat命令找不到
查看>>