You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

每年定投复利计算代码逻辑错误排查求助

定投复利代码逻辑错误排查与修正

问题分析

你的代码核心错误在于变量职责混淆+重复计息,导致从第二年开始计算结果偏离预期:

  • 变量eachYearInvest既被用作每年固定投入的金额(12万),又被用来累计总金额,后续循环中错误地将「上年总金额+当年投入」再次复利,而非仅对累计总金额加当年投入后做单次复利计算。
  • 以第二年为例,代码先把(第一年总金额+12万)×1.035设为新的eachYearInvest,再用这个值×1.035得到第二年的“收益”,相当于对当年投入的12万复利了两次,完全违背定投每年固定投入、年末一次复利的逻辑。

正确逻辑梳理

定投复利(年初投入、年末计息)的公式为:
第n年总金额 = (第n-1年总金额 + 当年固定投入) × (1+年利率)
对应你的场景:

  • 第1年:(0 + 12) × 1.035 = 12.42(符合预期)
  • 第2年:(12.42 + 12) × 1.035 ≈ 25.28(符合预期)
  • 第3年:(25.28 + 12) × 1.035 ≈ 38.59(符合预期)

修正后的代码

int year = 10;
double annualInvest = 12; // 代表12万,与你的初始设定一致
double totalAmount = 0;
double rate = 1.035;

for (int i = 1; i <= year; i++) {
    // 年初投入当年资金,年末计算复利
    totalAmount = (totalAmount + annualInvest) * rate;
    System.out.println("at " + i + " year the total revenue are " + String.format("%.2f", totalAmount));
}

代码说明

  • 用totalAmount专门累计每年的总金额,职责单一,避免变量混淆。
  • 每年固定投入annualInvest(12万),对累计金额加当年投入的总和计算复利,完全匹配定投逻辑。
  • 通过String.format("%.2f", totalAmount)输出保留两位小数的结果,和你的预期格式一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:32:52