[英]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 }
。
浮點數(和雙精度數)的不同之處在於,將包含數字的總字節數分為兩部分,一部分用於尾數,一部分用於指數。
這給出了一個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.