2010-01-20 29 views
-1

我正在做一個項目涉及沒有BigInteger,BigDecimal等大數字我已經設法做所有的基礎知識,但現在我需要添加計算階乘的能力。我的BigNumber將數據存儲爲int []。java.bigInteger valueOf如何工作?

下面是BigInteger的示例解決方案,但如果沒有我的編號的實際值,我不能使用它。

BigInteger n = BigInteger.ONE; 
    for (int i=1; i<=20; i++) { 
     n = n.multiply(BigInteger.valueOf(i)); 
     System.out.println(i + "! = " + n); 
    } 

那麼如何計算這個值呢?加上從上到下的數字,乘以10,數百乘以100等等,並存儲它很長時間?

BigInteger的來源: http://developer.classpath.org/doc/java/math/BigInteger-source.html

+4

也許這只是我,但我真的不明白這個問題。 – Roman 2010-01-20 04:11:57

+0

這個問題我也不清楚。它看起來像OP想要將整數存儲在數組中的每個元素對應於每個數字(我可能也是錯的) – sateesh 2010-01-20 04:18:12

+0

@sateesh哦,你是對的。這對我來說也是如此,但我不太瞭解BigInteger或代碼示例在問題中扮演的角色。我只是重新閱讀它,它看起來像代碼是無關的。 – Roman 2010-01-20 04:47:21

回答

0

所以怎麼算的價值?加上從上到下的數字,乘以10,數百乘以100等等,並存儲它很長時間?

我不認爲將它存儲爲long是你的意圖。如果價值大於Long.MAX_VALUE,會發生什麼?

如果nBigInteger,那麼n.multiply(BigInteger.valueOf(i));應返回BigInteger對象。 multiply方法應該知道如何與兩個BigInteger對象進行乘法運算,而無需將它們轉換爲long。這樣做的一種方法是使用我們在小學時學到的乘法和進位算法循環每個數字。如果你的價值觀是天文數字,這將會非常緩慢,但它確實有易於理解和實施的好處。