我想弄清楚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 - 它具有源 –