不能够正确输出100的阶乘

为何我的代码不能正确输出100的阶乘值呢?以为是超过了int的最大值范围,换成了long也不行,10以内的阶乘都可以正确输出

img

就是太大了:9.3326215e+157,157位数:

private static BigDecimal factorial(int num) {
    if (num == 1) {
        return BigDecimal.valueOf(1);
    } else {
        return BigDecimal.valueOf(num).multiply(factorial(num - 1));
    }
}

要用BigInteger类,然后也没有重载*运算符,用multiply方法

long也太小了
你根本不明白100的阶乘到底多大
13的阶乘就已经超出int范围了,long也只比int多了一倍的存储空间,两个int相乘那么大而已

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^