详解JavaScript中精度失准问题及解决方法


Posted in Javascript onFebruary 04, 2020

首先来看一下JavaScript中的数字类型的存储情况

①JS中所有的数字(小数、整型)都是浮点型
②JS中小数、整型都是Number类型
③JS中Number类型使用binary64或双精度表示的,实质是一个二进制格式64位的浮点数
④64位的二进制具体为最高的1位是符号位,接着的11位是指数,剩下的52位为有效数字
⑤符号位决定了一个数的正负,指数部分决定了数值的大小,小数部分决定了数值的精度,因此,JavaScript提供的有效

数字最长为53个二进制位(64位浮点的后52位+有效数字第一位的1)

详解JavaScript中精度失准问题及解决方法

知道Number的具体存储特征后,我们再来分析一下小数精度丢失的原因

小数进行算术运算时,实质上就是把十进制的浮点数转化为二进制,这样的结果是无穷的,JS最多有2的53次方有效数字,并不是精准的,所以再进行运算时会失准

那么JS可以存储最大的数字和最大安全数字是什么呢?可以使用Number的属性进行表示

JS存储最大值:Number.Max_VALUE()
JS最大安全值:Number.Max_SAFE_INTERGER(),即2的53次方

最后看一下处理大数字(超出范围)的方法及避免精度丢失的方法

避免精度丢失方法:toFixed()方法,先进行四舍五入取有效的小数位数,然后使用parseFloat()返回浮点数
处理大数字的方法:
①使用big-integer处理大数
②将数字变为字符串进行处理

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript下高性能字符串连接StringBuffer类
Aug 16 Javascript
js倒计时小程序
Nov 05 Javascript
jquery默认校验规则整理
Mar 24 Javascript
JS创建类和对象的两种不同方式
Aug 08 Javascript
javascript运动详解
Jul 06 Javascript
JS对象是否拥有某属性如何判断
Feb 03 Javascript
微信小程序的分类页面制作
Jun 27 Javascript
在 Node.js 中使用原生 ES 模块方法解析
Sep 19 Javascript
JavaScript数据结构之单链表和循环链表
Nov 28 Javascript
jQuery实现的滑块滑动导航效果示例
Jun 04 jQuery
vue自定义指令之面板拖拽的实现
Apr 14 Javascript
原生JS与CSS实现软件卸载对话框功能
Dec 05 Javascript
Preload基础使用方法详解
Feb 03 #Javascript
使用PreloadJS加载图片资源的基础方法详解
Feb 03 #Javascript
使用preload预加载页面资源时注意事项
Feb 03 #Javascript
jQuery实现小火箭返回顶部特效
Feb 03 #jQuery
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
Feb 03 #Javascript
微信小程序实现上传多个文件 超过10个
Mar 30 #Javascript
微信小程序实现同时上传多张图片
Feb 03 #Javascript
You might like
php中文字符截取防乱码
2008/03/28 PHP
php入门学习知识点五 关于php数组的几个基本操作
2011/07/14 PHP
javascript操作文本框readOnly
2007/05/15 Javascript
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
javascript操作cookie_获取与修改代码
2009/05/21 Javascript
再谈javascript面向对象编程
2012/03/18 Javascript
asp.net刷新本页面的六种方法总结
2014/01/07 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
Javascript 赋值机制详解
2014/11/23 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
javascript控制图片播放的实现代码
2020/07/29 Javascript
JS实现适合于后台使用的动画折叠菜单效果
2015/09/21 Javascript
理解javascript中try...catch...finally
2015/12/25 Javascript
JS函数多个参数默认值指定方法分析
2016/11/28 Javascript
基于jQuery实现的打字机效果
2017/01/16 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
2017/04/25 Javascript
老生常谈ES6中的类
2017/07/31 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
vue项目里面引用svg文件并给svg里面的元素赋值
2020/08/17 Javascript
Python ldap实现登录实例代码
2016/09/30 Python
mysql 之通过配置文件链接数据库
2017/08/12 Python
Python3操作SQL Server数据库(实例讲解)
2017/10/21 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
Python 使用 docopt 解析json参数文件过程讲解
2019/08/13 Python
3种python调用其他脚本的方法
2020/01/06 Python
python对XML文件的操作实现代码
2020/03/27 Python
Paul Smith英国官网:英国国宝级时装品牌
2019/03/21 全球购物
幼儿园教师奖惩制度
2014/02/01 职场文书
四风问题民主生活会对照检查材料思想汇报
2014/09/27 职场文书
简历自荐信范文
2015/03/09 职场文书
SpringDataJPA实体类关系映射配置方式
2021/12/06 Java/Android
Python实现文字pdf转换图片pdf效果
2022/04/03 Python