浅谈javascript中小数和大整数的精度丢失

浅谈javascript中小数和大整数的精度丢失

ID:30517342

大小:17.43 KB

页数:6页

时间:2018-12-31

浅谈javascript中小数和大整数的精度丢失_第1页
浅谈javascript中小数和大整数的精度丢失_第2页
浅谈javascript中小数和大整数的精度丢失_第3页
浅谈javascript中小数和大整数的精度丢失_第4页
浅谈javascript中小数和大整数的精度丢失_第5页
资源描述:

《浅谈javascript中小数和大整数的精度丢失》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解浅谈JavaScript中小数和大整数的精度丢失  下面小编就为大家带来一篇浅谈JavaScript中小数和大整数的精度丢失。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。  先来看两个问题:  0.1+0.2==0.3;//false  99999==;//true  第一个问题是小数的精度问题,在业界不少博客里已有讨论。第二个问题,去年公司有个系统的数据库在做数据订正时,发现有部分数据重复的诡异现象。本文将从规范出发,

2、对上面的问题做个小结。  最大整数  JavaScript中的数字是用IEEE754双精度64位浮点数来存储的,其格式为:  sxmx2^e  s是符号位,表示正负。m是尾数,有52bits.e是指数,有11bits.在ECMAScript规范里有给出e的范围为[-1074,971].这样,很容易推导出JavaScript能表示的最大整数为:  1x(2^53-1)x2^971=1.23157e+308  这个值正是Number.MAX_VALUE对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实

3、代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解  同理可推导出Number.MIN_VALUE的值为:  1x1x2^(-1074)=5e-324  注意MIN_VALUE表示最接近0的正数,而不是最小的数。最小的数是-Number.MAX_VALUE  小数的精度丢失  JavaScript的数字都是双精度浮点数,在计算机里用二进制存储。当有效位数超过52位时,会存在精度丢失。比如:  十进制0.1的二进制为0.0001100110011…(循环0011)  十进制0.

4、2的二进制为0.001100110011…(循环0011)  0.1+0.2相加可表示为:    e=-4;m=1....1100(52位)   +e=-3;m=1....1100(52位)  ---------------------------------------------    e=-3;m=0....0110   +e=-3;m=1....1100  ---------------------------------------------    e=-3;m=10....001  ------------------------------------

5、---------   =0.011...001对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解   =0.(十进制)  根据上面的演算,还可以得出一个结论:当十进制小数的二进制表示的有限数字不超过52位时,在JavaScript里是可以精确存储的。比如:  0.05+0.005==0.055//true  进一步的规律,比如:  0.05+0.2==0

6、.25//true  0.05+0.9==0.95//false  需要考虑IEEE754的Roundingmodes,有兴趣的可进一步研究。  大整数的精度丢失  这个问题鲜有人提及。首先得弄清楚问题是什么:  1.JavaScript能存储的最大整数是什么?  该问题前面已回答,是Number.MAX_VALUE,非常大的一个数。  2.JavaScript能存储的且不丢失精度的最大整数是什么?  根据sxmx2^e,符号位取正,52位尾数全填充1,指数e取最大值971,显然,答案依旧是Number.MAX_VALUE.  我们的问题究竟是什么呢?回到起始代码: 

7、 99999==;//true对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解  很明显,16个9还远远小于308个10.这个问题与MAX_VALUE没什么关系,还得归属到尾数m只有52位上来。  可以用代码来描述:  varx=1;//为了减少运算量,初始值可以设大一点,比如Math.pow(2,53)-10  while(x!=x+

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。