一文教会你解决js数字精度丢失问题

 更新时间:2022年08月25日 11:39:16   作者:韩旭在努力  
在JavaScript中计算两个十进制数的和,有时候会出现令人惊讶的结果,相信这个大家也都知道了,下面这篇文章主要给大家介绍了关于解决js数字精度丢失问题的相关资料,需要的朋友可以参考下

一、关于为什么要解决精度丢失

可以看下例子,因为js失去精度问题也是常见的问题,正常我们可以四舍五入或者 toFixed保留小数这种去解决

现在遇到问题是我们明知道计算结果是等于0.01的但是最后的结果确实true,如果我们遇到运算问题,小数数值比对问题,那么我们就必须要去解决他,否则也就会出现上者情况,出现逻辑判断出错问题

二、怎么解决js的计算精度丢失问题?

正常来说如果是 小数点保留后2位、3位等等,我们可以使用常见的 * 百位数、千位数 实现整位结果后 将结果在除以对应的数位实现结果,如下

console.log(5.22 - 5.21);

console.log((5.22 * 100 - 5.21 * 100) / 100);

根据上方的描述我们再去着眼看我们最开始的例子

结果也就成了我们想要的结果

三、toPrecision 特定方法返回四舍五入长度字符串

当然toFixed也是可以实现对应的长度取舍效果的,因为各大浏览器针对toFixed的各类结果都是不同的有兴趣的同学可以参考下下面这篇文章

toFixed详解

在这里我们只介绍 toPrecision 参照方法详解

那么我们也就知道了此方法是用来干什么的

当然再有一点也就是从左到右 不为0的位置开始计算

上方举例 我们的结果是0.01

如果我们去使用toPrecision的话,那么要填写的参数则为1

返还的结果也就是我们想要的 0.01

然后我们搭配 parseFloat 对字符串进行一个浮点数值转换后,然后对比得出最后结果

console.log(5.22 - 5.21 < 0.01);
console.log((5.22 * 100 - 5.21 * 100) / 100 < 0.01);
var num = 5.22 - 5.21;
console.log(parseFloat(num.toPrecision(1)) < 0.01);

结语

到此这篇关于解决js数字精度丢失问题的文章就介绍到这了,更多相关js数字精度丢失内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于JavaScript实现实时在线协作编辑器

    基于JavaScript实现实时在线协作编辑器

    随着Web技术的发展,实现在线协作编辑文档已经成为一种常见的需求,本文主要为大家详细介绍了如何使用JavaScript实现实时在线协作编辑器,需要的可以参考下
    2024-01-01
  • 如何通过IntersectionObserver实现懒加载

    如何通过IntersectionObserver实现懒加载

    这篇文章主要介绍了通过IntersectionObserver实现懒加载,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • 微信小程序商城项目之购物数量加减(3)

    微信小程序商城项目之购物数量加减(3)

    这篇文章主要为大家详细介绍了微信小程序商城购物数量加减功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • 浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()

    浅析JavaScript的几种Math函数,random(),ceil(),round(),floor()

    本文主要对JavaScript的几种Math函数,random(),ceil(),round(),floor()的作用进行简要解析,具有很好的参考价值,需要的朋友一起来看下吧
    2016-12-12
  • 3种js实现string的substring方法

    3种js实现string的substring方法

    这篇文章主要介绍了3种javascript实现string的substring方法,需要的朋友可以参考下
    2015-11-11
  • 使用bat打开多个cmd窗口执行gulp、node

    使用bat打开多个cmd窗口执行gulp、node

    本文主要介绍了使用bat打开多个cmd窗口执行gulp、node的方法。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • javascript中window.location.href的用法

    javascript中window.location.href的用法

    window.location.href 是一个用于获取当前页面 URL 或让浏览器跳转到新 URL 的重要方法,本文就详细的介绍一下javascript中window.location.href的用法,感兴趣的可以了解一下
    2023-08-08
  • 通俗解释JavaScript正则表达式快速记忆

    通俗解释JavaScript正则表达式快速记忆

    正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。简单来说,就是按照某种规则去匹配符合条件的字符串
    2017-08-08
  • JavaScript展开运算符用法及实际应用详解

    JavaScript展开运算符用法及实际应用详解

    展开运算符是JavaScript中的语法糖,用三个点(...)表示,广泛应用于数组和对象的操作,本文介绍了其基本用法,如在数组和对象中的应用,合并数组或对象,更新对象属性等,还探讨了展开运算符的高级应用,需要的朋友可以参考下
    2024-09-09
  • JS常用时间操作moment.js的使用方法

    JS常用时间操作moment.js的使用方法

    Moment.js是一个轻量级的JavaScript时间库,通常会对时间进行下面这几个操作:比如获取时间,设置时间,格式化时间,比较时间等等,本文就来介绍一下如何使用,感兴趣的可以了解下
    2023-09-09

最新评论