我想弄清楚Java 7 x64中与BigIntegers相关的以下问题。我试图计算出一个数字,以极高的力量。代码如下,然后是问题描述。打印非常大BigIntegers
import java.math.BigInteger;
public class main {
public static void main(String[] args) {
// Demo calculation; Desired calculation: BigInteger("4096").pow(800*600)
BigInteger images = new BigInteger("2").pow(15544);
System.out.println(
"The number of possible 16 bpc color 800x600 images is: "
+ images.toString());
}
}
我遇到了打印此操作结果的问题。执行此代码时,将打印该消息,但不会显示images.toString()
的值。
要隔离问题,我开始计算两个幂,而不是在该行的注释中列出的所需计算。在我测试过的两个系统上,2^15544
是触发问题的最小计算; 2^15543
工作正常。
我不是在哪里接近主机系统的内存限制,我不相信我甚至接近VM限制(无论如何,运行VM参数-Xmx1024M
-Xms1024M
都没有影响)。
在互联网戳寻找答案我已经开始怀疑,我打在任何BigInteger
或String
涉及到一个数组(Integer.MAX_VALUE
),这些类型的使用内部数据存储的最大尺寸的限制后。如果问题出在String
上,我认为可以延长BigInteger
,并写出一种打印方法,一次印出几个字符,直到打印整个BigInteger
,但我宁可怀疑问题在于别处。
谢谢您花时间阅读我的问题。
嗯,这个代码工作对我很好,而且在这里工作得很好:http://ideone.com/EA0yl。 –
我认为这个问题可能是你的终端。尝试将其打印到文件中。 –
您可以调试运行时。使用JDK - 它具有源 –