详解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 相关文章推荐
JScript内置对象Array中元素的删除方法
Mar 08 Javascript
csdn 批量接受好友邀请
Feb 19 Javascript
jQuery getJSON 处理json数据的代码
Jul 26 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
Feb 04 Javascript
JavaScript中具名函数的多种调用方式总结
Nov 08 Javascript
Bootstrap如何创建表单
Oct 21 Javascript
jQuery实现简单的计时器功能实例分析
Aug 29 jQuery
javaScript动态添加Li元素的实例
Feb 24 Javascript
详解angular如何调用HTML字符串的方法
Jun 30 Javascript
JS/HTML5游戏常用算法之路径搜索算法 A*寻路算法完整实例
Dec 14 Javascript
详解vue-cli3开发Chrome插件实践
May 29 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
May 18 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企业级应用之常见缓存技术篇
2011/01/27 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
php版微信小店API二次开发及使用示例
2016/11/12 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
jQuery表单域选择器用法分析
2015/02/10 Javascript
基于jQuery实现网页进度显示插件
2015/03/04 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
javascript实现在网页中运行本地程序的方法
2016/02/03 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
vue上传图片组件编写代码
2017/07/26 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
Vue cli+mui 区域滚动的实例代码
2018/01/25 Javascript
bootstrap自定义样式之bootstrap实现侧边导航栏功能
2018/09/10 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
详解阿里Node.js技术文档之process模块学习指南
2021/01/04 Javascript
python抓取需要扫微信登陆页面
2019/04/29 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
香港时尚女装购物网站:ZAFUL
2017/07/19 全球购物
英国手机零售商:Metrofone
2019/03/18 全球购物
应届生自荐信范文
2014/02/21 职场文书
个人委托书范本汇总
2014/10/01 职场文书
2016年敬老月活动总结
2016/04/05 职场文书
刚学完怎么用Python实现定时任务,转头就跑去撩妹!
2021/06/05 Python