You need to enable JavaScript to run this app. Java通过阶乘for循环近似计算自然常数e输出异常排查
优惠活动
大模型
产品
解决方案
定价
更多

Java通过阶乘for循环近似计算自然常数e输出异常排查

代码问题排查及修复方案

核心错误原因

  • 错误1:整数除法规则导致后续累加项恒为0
    Java中两个整数类型做除法运算时,结果会默认保留整数部分直接截断小数。你代码中1 / e_fact的1是int字面量,e_fact是long类型,二者都是整数,当e_fact >= 2时,运算结果恒为0,所以除了第一次累加有效外,后续累加都相当于加0,输出始终为2。
  • 错误2:阶乘变量未每次迭代重置,导致阶乘计算结果错误
    你在外层循环外初始化了e_fact = 1,但每次内层循环计算新的阶乘前没有将e_fact重置为1,后续迭代的阶乘结果会是错误的累积值,就算解决了整数除法问题,结果也会偏离预期。
  • 优化点:不需要内层循环计算阶乘,每次外层迭代可以直接复用上次的阶乘结果,减少冗余计算。

修复后参考代码

import java.util.Scanner;

public class CalculateE {
    public static void main(String[] args) {
        Scanner Case3Scanner = new Scanner(System.in);
        System.out.println("Nivel de exactitud? (iteraciones)?");
        int e_stop = Case3Scanner.nextInt();
        System.out.println("--------------");

        double e_total = 1; // 最终输出的e近似结果
        long e_fact = 1; // 存储当前迭代对应的阶乘结果
        for (int e = 1; e <= e_stop; e++) {
            e_fact *= e; // 直接复用上次阶乘结果计算当前阶乘
            e_total += 1.0 / e_fact; // 用1.0触发浮点数除法,保留小数
            System.out.println(e_total);
        }
        Case3Scanner.close();
    }
}

内容的提问来源于stack exchange,提问作者lupinx2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 07:24:02