繁体   English   中英

Javascript - 科学记数法受限制的最大数量是多少?

[英]Javascript - What is the maximum number in scientific notation restricted by?

在JavaScript中,我很想知道科学记数法中可能出现的最大可能数是多少而没有得到“无限”,所以我写了一个小程序,发现它就是这个:

17976931348623158079372897140530341507993413271003782693617377898044496829276475094664901797758720709633028641669288791094655554785194040263065748867150582068190890200070838367627385484581771153176447573027006985557136695962284291481986083493647529271907416844436551070434271155969950809304288017790417449779

其缩写为1.7976931348623157e + 308。

我的问题是,是什么使这个特定数字成为JavaScript的最大数量? 它是依赖于硬件的(可能是64位上的最大值?)还是特定于语言的? 为什么308的最大可用功率为10?

而且,在其他语言中有多么不同?

简短回答:
双精度浮球。 由于如何定义双数据类型。

答案很长:

所有浮点数(double是双精度浮点数)都写成两个值的乘积,即尾数和指数。 原则上,这与数字以科学记数法编写的方式类似:对于数字1.34 * 10 ^ 24,尾数为1.34,指数为24。

https://en.wikipedia.org/wiki/Double-precision_floating-point_format

Number.MAX_VALUE

Number.MAX_VALUE的值是Number类型的最大正有限值,大约是1.7976931348623157e + 308。

此属性具有属性{ [[Writable]]: false, [[Enumerable]]: fafalselse, [[Configurable]]: false }

http://ecma262-5.com/ELS5_HTML.htm#Section_8.5

浮点数(和双精度数)的不同之处在于,将包含数字的总字节数分为两部分,一部分用于尾数,一部分用于指数。 双精度二进制浮点格式:binary64

这给出了一个10位的指数,以及指数的一个符号位,这样就可以得到-1023到+1024之间的数字。

但是,指数的基数不是10,而是2.存储浮点数指数的方式使用8位(对于浮点数)或11位(对于双精度数),这意味着得到的指数值为-127到+128(浮动)或-1023到+1024(双)。

而2 ^ 1024给出的值为1.797693134862315907729305190789 * 10 ^ 308,这是双精度浮点数的最大指数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM