详解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 相关文章推荐
如何在标题栏显示框架内页面的标题
Feb 03 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
Oct 21 Javascript
js中function()使用方法
Dec 24 Javascript
jquery做的一个简单的屏幕锁定提示框
Mar 26 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 Javascript
jquery实现动静态条形统计图
Aug 17 Javascript
jquery实现表单验证简单实例演示
Nov 23 Javascript
jQuery实现右键菜单、遮罩等效果代码
Sep 27 Javascript
javascript 操作cookies详解及实例
Feb 22 Javascript
Node.js使用supervisor进行开发中调试的方法
Mar 26 Javascript
JS解惑之Object中的key是有序的么
May 06 Javascript
微信jssdk踩坑之签名错误invalid signature
May 19 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
自己动手做一个SQL解释器
2006/10/09 PHP
php 生成唯一id的几种解决方法
2013/03/08 PHP
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
php实现保存周期为1天的购物车类
2017/07/07 PHP
PHP使用pdo实现事务处理操作示例
2018/09/05 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
javascript 全角转换实现代码
2009/07/17 Javascript
js获取当前页面路径示例讲解
2014/01/08 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
关于Function中的bind()示例详解
2016/12/02 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
js原生代码实现轮播图的实例讲解
2017/07/28 Javascript
在Swiper内如何制作CSS3动画效果示例代码
2017/12/07 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
js实现随机抽奖
2020/03/19 Javascript
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
查看python下OpenCV版本的方法
2018/08/03 Python
Python调用C++,通过Pybind11制作Python接口
2018/10/16 Python
Python实现不规则图形填充的思路
2020/02/02 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
浅谈Python 参数与变量
2020/06/20 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
公司总经理岗位职责
2014/03/15 职场文书
四群教育工作实施方案
2014/03/26 职场文书
倡议书范文
2014/04/16 职场文书
梅花魂教学反思
2014/04/25 职场文书
七一建党节演讲稿
2014/09/11 职场文书
银行竞聘上岗演讲稿
2014/09/12 职场文书
2014年局领导班子自身建设情况汇报
2014/11/21 职场文书
初中班主任培训心得体会
2016/01/07 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python