首页 > 其他分享 >js中0.1+0.2不等于0.3问题,解决方法

js中0.1+0.2不等于0.3问题,解决方法

时间:2023-08-25 16:01:28浏览次数:33  
标签:10 0.1 0.3 0.2 js toFixed

因为js使用的双精度浮点,所以在计算机内部存储数据的编码会出现误差,导致0.1+0.2=0.30000000000000004。和0.3相比较结果为false。
我目前所知道的解决方法有以下几种:
1.将其先转换成整数,再相加之后转回小数。具体做法为先乘10相加后除以10.如下图

 let x=(0.1*10+0.2*10)/10;
 console.log(x===0.3)
 

2.使用number对象的toFixed方法,toFixed方法可以指定运算结果的小数点后的指定位数的数字,使保留一位小数就是toFixed(1)。

//let x=(0.1+0.2).toFixed(1)
//因为使用toFixed方法将number类型转换成了字符串类型
//,所以使用parseFloat将字符串转回number类型
let x=parseFloat((0.1+0.2).toFixed(1));
console.log(x===0.3);
 

3.使用es6新增的Number.EPSILON方法,这个方法表示js的最小精度,使用这个方法通常只是对0.1+0.2是否=0.3做判断,并不像前两种改变0.1+0.2的值。

function equal(a, b) {
 	return Math.abs(a - b) < (Number.EPSILON ? Number.EPSILON : Math.pow(2, -52));
           //此处使用了三目运算符对IE进行兼容,也可以使用if(Number.EPSILON)进行兼容判断。
}
/*不考虑兼容
function equal(a,b){
   return Math.abs(a-b)<Number.EPSILON;
   //相当于把比较的boolean值返回
}
*/
console.log(equal(0.1 + 0.2, 0.3))
 

 

标签:10,0.1,0.3,0.2,js,toFixed
From: https://www.cnblogs.com/lguow/p/17657161.html

相关文章

  • 版本升级 | v1.0.13发布,传下去:更好用了
    新发行版来啦~本次更新主要聚焦兼容性的提升及结果报告格式的增加,另外对部分解析逻辑及使用体验进行了优化。在这里特别鸣谢大佬@Hugo-X在社区仓库提交的PR~后续,OpenSCA项目组会继续致力于完善本地能力闭环,覆盖更多场景。v1.0.13更新内容本地漏洞库兼容多数据格式支持SQLite、CSV格......
  • 主从升级(mysql5.7.39-mysql8.0.25)
    环境:OS:Centos7当前数据库版本:5.7.39(主从目前启用了审计server_audit.so,master_auto_position=1)计划升级的数据库版本:8.0.28升级顺序:先升级从库########################从库机器上的操作######################1.从库机器上安装好新版本的mysql注意端口和socket不能与......
  • Qt Creator 11.0.2 设计器的智能化还有待提高
    QtCreator11.0.2设计器的智能化还有待提高在设计器中加入一个QComboBox,使用"转到槽.."时,选择信号activated时只出来一种定义,查QT帮助资料可以看到是应该有两种方式,两种方式的传参不一样,一个是int整数,一种是QString字符串,但这里只给出一种有点不人性化查看帮助 这里我们来验证......
  • 奕仙牌计算器 0.0.2
    【点击下载】【点击下载】【点击下载】经过了半年开发(摸鱼居多),终于发布了!欢迎加QQ群交流:862070460设置角色/职业配置卡牌点选要修改的卡牌在卡牌搜索框搜索卡牌通过(1-9快捷键)来选择卡牌(或则通过点选按钮来选择)对局分析推荐卡序如图所示,虽然都是输,但是推荐卡......
  • 水果音乐制作软件fl studio v21.1.0.3713 中文特别版2023系统配置要求
    水果音乐制作软件flstudiov21.1.0.3713中文特别版是一个功能完备的音乐制作环境,能够进行多轨道音频录制、音序处理和混音,可以帮助用户创作专业质量的音乐轨道。借助VST托管、灵活的混音器、高级MIDI和ReWire支持,您将轻松驾驭各种音乐风格。歌曲或循环可以导出为.wav、.......
  • 【渗透测试】 Vulnhub JANGOW: 1.0.1
    渗透环境攻击机:   IP: 192.168.149.128(Kali)靶机:     IP:192.168.149.129靶机下载地址:https://www.vulnhub.com/entry/jangow-101,754/进行渗透一、获取IP及端口信息使用nmap扫描同网段IP,如果使用的是VMware可能出现扫描不到的情况,需要在靶机的恢复模式里......
  • MacbookPro 17年款老机器升级Macos10.15.7挺好的
    MacbookPro17年款老机器升级Macos10.15.7挺好的由于需要安装一些软件,至少需要10.14或者10.15,所以,把MacBookPro17年款的老机器进行了升级,原装的系统是10.12.6.安装之前在网上搜索了各种升级的利弊,有升级成功的,也有很多说升级之后不能使用,然后又降级的。搞得犹豫了好一会,最后还......
  • 斗罗大陆武魂觉醒折扣平台,武魂觉醒折扣服0.1折
    在中华网游界,一款名为"斗罗大陆武魂觉醒"的手游现在成为了一颗璀璨的明星。炫酷的特效,丰富的剧情,吸引了大批的玩家。对于喜欢玩此款游戏的人来说,找到一个折扣平台和折扣服就显得尤为重要。本文将给您介绍斗罗大陆武魂觉醒折扣平台,可以关注“娱乐天梯”获取,武魂觉醒折扣服0.1折。 ......
  • 国产麒麟系统KylinOS Server V10 SP2安装MySQL 8.0.26—源码编译安装
    一:操作系统环境检查1.1首先确认操作系统版本是KylinOSServerV10SP2麒麟操作系统KylinosServerV10SP2使用的安装介质是Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso,执行以下命令查看版本:cat/etc/kylin-releasecat/proc/version 1.2检查系统是否......
  • 分类树,我从2s优化到0.1s
    但就是这样一个简单的分类树查询功能,我们却优化了5次。到底是怎么回事呢?背景我们的网站使用了SpringBoot推荐的模板引擎:Thymeleaf,进行动态渲染。它是一个XML/XHTML/HTML5模板引擎,可用于Web与非Web环境中的应用开发。它提供了一个用于整合SpringMVC的可选模块,在应用开发中,我们可以使......