在写用阶乘求e的时候出错

在写用阶乘求e的时候遇到问题了,34之前输出的,都是正常的,35之后就出错了,sum变成了负的
求问为什么会这样
题目

img

代码如下

    int n = scan.nextInt();
    
        double e = 0;
        int sum =1;
        
        for(int i = 1;i < n+1;i++){
            if(i == 1){
                sum = 1;
            }else{
                sum = sum * (i - 1);
                    
            }
                e = (int)((e + 1.0 / sum) * 100000) / 100000.0 ;
            
            
                
        }
        System.out.println(e);//35有跃迁?

34的时候

img

35的时候

img

望告知,多谢!

35!太大了,超过了int最大表示范围(2的31次方-1,大约21亿)
要么用double,要么用long long

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

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