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

C++复利计算程序余额输出与预期不符,差值100求解

问题分析与解决方法

问题根源

当前程序的核心问题是循环内操作逻辑顺序错误:在每年的计算流程中,无论计算利息后余额是否已达到目标值,都会强制添加年度缴款,导致最后一年的余额多计入了一笔年度缴款。

具体来说,当第12年末余额为19550.28时,进入循环后:

  1. 年份增加至13;
  2. 计算利息后余额变为19550.28 * 1.05 = 20527.79,此时已超过目标值20000;
  3. 程序仍然执行了balance += contribution,将余额额外增加100,最终得到20627.8,与预期不符。

解决方法

在计算完当年利息后增加判断逻辑:如果余额已达标,就不再添加年度缴款,直接退出循环。修改后的循环代码如下:

while(balance < TARGET)
{
    year++;
    // 先计算当年利息
    balance += balance * RATE/100;
    // 若利息计算后已达标,无需再添加年度缴款
    if (balance >= TARGET)
    {
        break;
    }
    // 未达标则添加年度缴款
    balance += contribution;
}

修改后输入100运行,输出将符合预期:

Annual contribution:
100
Year: 13
Balance: 20527.8

逻辑说明

调整后的流程符合合理的理财计算逻辑:当当年利息计算后余额已翻倍,就无需再缴纳当年款项,此时的年份即为所需年数;只有当利息计算后余额仍未达标时,才需要继续缴纳年度缴款并进入下一轮循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 11:27:07