网友之一 2023-04-02 20:09 采纳率: 100%
浏览 15
已结题

在写用阶乘求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

望告知,多谢!

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-04-02 20:55
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月10日
  • 已采纳回答 4月2日
  • 创建了问题 4月2日