簡體   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