2010-01-20 23 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。这样做的一种方法是使用我们在小学时学到的乘法和进位算法循环每个数字。如果你的价值观是天文数字,这将会非常缓慢,但它确实有易于理解和实施的好处。