Javascript-科学符号中受限制的最大数字是多少?
在JavaScript中,我很想知道在科学记数法中可以表示的最大值是多少,而不会得到“无穷大”,因此我编写了一个小程序,发现它是这样的:Javascript-科学符号中受限制的最大数字是多少?,javascript,Javascript,在JavaScript中,我很想知道在科学记数法中可以表示的最大值是多少,而不会得到“无穷大”,因此我编写了一个小程序,发现它是这样的: 1797693134862315807937289714053034150799341327100378269361737789804449682927647509466490179775872070963302864166928879109465555478519404026306574886715058206819089020007083836762738
17976931348623158079372897140530341507993413271003782693617377898044496829276475094664901797758720709633028641669288791094655554785194040263065748867150582068190890200070838367627385484581771153176447573027006985557136695962284291481986083493647529271907416844436551070434271155969950809304288017790417449779
可缩写为1.7976931348623157e+308
我的问题是,是什么使这个特定的数字成为JavaScript中可能的最大值?它依赖于硬件(可能是64位上的最大值?)还是特定于语言?为什么308是10的最大可用功率
还有,它在其他语言中有什么不同呢?简短回答:
双精度浮动。由于double数据类型是如何定义的 长答案: 所有浮点数(double是双精度浮点)都被写为尾数和指数这两个值的乘积。原则上,这类似于用科学记数法写数字:对于数字1.34*10^24,尾数是1.34,指数是24
Number.MAX\u值
Number.MAX_value的值是数字类型的最大正有限值,约为1.7976931348623157e+308
此属性具有属性{[[Writable]]:false、[[Enumerable]]:fafalse、[[Configurable]]:false}
浮点数(和双精度浮点数)的不同之处在于,将包含数字的总字节分为两部分,一部分用于尾数,另一部分用于指数。
这会给你一个10位的指数,指数有一个符号位,所以会给你一个从-1023到+1024的数字
但是,指数的基数不是10,而是2。浮点数指数的存储方式使用8位(用于浮点)或11位(用于双精度),这意味着您可以获得-127到+128(浮点)或-1023到+1024(双精度)的指数值
2^1024的值为1.7976931348623159077293305190789*10^308,这是双精度浮点的最大指数。顺便说一句,你可以简单地使用
Number.MAX\u value
来获得这个值,你在想什么其他语言?@YuryTarabanko Bummer。不管怎样,做起来很有趣:)想想中间值。他们在记忆中是如何表现的?所以你们有308个数字作为字符串,但当你们把它转换成数字时,引擎用53位来存储308个“正确”的数字,对吗?@Hankrecords,我误解你们的问题了吗?