Java对无穷大的定义

Java对无穷大的定义,java,64-bit,infinity,Java,64 Bit,Infinity,我尝试用java运行这段代码 System.out.println(Math.pow(2,1024)); System.out.println(Math.pow(2,1023)); 结果是: 无穷大 8.98846567431158E307 我想知道为什么2^1024是无穷大?2^1023不是吗?我想这与1024等于2^10这一事实有关,但我不太明白。另外,如果我尝试在124位而不是64位的机器上运行它,答案会改变吗 有点困惑,希望您能提供帮助:)这是因为计算超出了双精度范围。您将在“124”

我尝试用java运行这段代码

System.out.println(Math.pow(2,1024));
System.out.println(Math.pow(2,1023));
结果是:

无穷大

8.98846567431158E307

我想知道为什么2^1024是无穷大?2^1023不是吗?我想这与1024等于2^10这一事实有关,但我不太明白。另外,如果我尝试在124位而不是64位的机器上运行它,答案会改变吗


有点困惑,希望您能提供帮助:)

这是因为计算超出了双精度范围。您将在“124”位机器中看到相同的结果

因为
Double.MAX\u值小于2^1024但大于2^1023@harold但是,Double.MAX_值被定义为介于2^1023和2^1024之间也是有原因的吗?实际上,我们可以说最大值接近2^1024。如果您尝试在java中执行2^1023**1.999999999998,您将得到1.7976931348623157E308,它等于两个最大值。是的,这两者都有一个真正的原因(不是任意选择),最大指数是1023,但通过设置有效位的所有位,您几乎可以达到1024。java中没有“124位机器”这样的东西。Java原语类型的大小在JLS中定义。