我知道 BigInteger
是处理非常大的数字时要使用的类。我写了一个简单的脚本来计算阶乘。但是,它在输入 25 及以上时中断。
/**
* Calculates the factorial of a given number
*/
BigInteger fact(long n){
def fact = 1
while(n > 0){
fact *= n--
}
return fact
}
处理大到 100 的数字的正确方法是什么!?
最佳答案
只需将 fact
声明为带有 Groovy 的 G
后缀的 BigInteger:
BigInteger fact(long n){
def fact = 1G
while(n > 0){
fact *= n--
}
return fact
}
assert fact(30) == 265252859812191058636308480000000
assert fact(25) == 15511210043330985984000000
assert fact(100) == 93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
关于java - 处理100!在 Java/Groovy 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25713464/