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

C#储蓄账户利息问题:如何计算余额达到目标值所需的年数

现有代码的问题

  • 循环内第一行就执行return,逻辑会在第一次循环时直接退出,完全无法累计年数
  • 只硬编码了余额≥5000美元的利率,没有覆盖所有档位,且余额每年复利上涨后会切换利率档位,不能固定用2.475%计算
  • balance++逻辑错误,余额是按利率复利增长,不是每次加1

实现思路

你可以直接复用之前已经完成的两个方法(获取对应利率、计算年度更新后余额),避免重复编码:

  1. 新增年数计数器,初始值为0
  2. 先做边界判断:如果初始余额已经≥目标余额,直接返回0年
  3. 循环执行逻辑:更新当前余额,年数+1,直到当前余额≥目标余额
  4. 终止循环后返回累计的年数

完整代码示例

public static int YearsBeforeDesiredBalance(decimal balance, decimal targetBalance)
{
    // 边界处理:初始余额已达标
    if (balance >= targetBalance)
    {
        return 0;
    }

    int years = 0;
    decimal currentBalance = balance;

    while (currentBalance < targetBalance)
    {
        // 复用已实现的年度余额更新逻辑
        currentBalance = CalculateAnnualBalance(currentBalance);
        years++;
    }

    return years;
}

// 你之前已完成的计算年度更新后余额的方法,供参考
private static decimal CalculateAnnualBalance(decimal balance)
{
    decimal rate = GetInterestRate(balance);
    return balance * (1 + rate);
}

// 你之前已完成的获取对应利率的方法,供参考
private static decimal GetInterestRate(decimal balance)
{
    if (balance < 0)
    {
        return 0.03213m;
    }
    else if (balance < 1000)
    {
        return 0.005m;
    }
    else if (balance < 5000)
    {
        return 0.01621m;
    }
    else
    {
        return 0.02475m;
    }
}

按示例参数balance: 200.75m, targetBalance: 214.88m调用,最终返回值为14,符合要求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:48:02