You need to enable JavaScript to run this app. VB.NET入门练习:固定金额月定投前4个月每月余额计算问题求助
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET入门练习:固定金额月定投前4个月每月余额计算问题求助

Visual Basic 练习题修正方案

现有代码问题

  • MonthlyInvestment 函数每次执行都会重置余额基数,没有累计历史存款和利息,不符合题目给出的复利计算规则
  • 仅调用一次计算方法,无法输出前4次存款的全部结果
  • ToString("C") 调用位置错误,你当前是对列表控件 Add 方法的返回值做格式化,而非对计算结果格式化

实现逻辑

按照题目给出的公式:新余额 = 1.005 * 上月旧余额 + 固定存款额,首次存款时上月旧余额为0,之后每一次计算都以上一次存款后的余额为基数,循环计算4次即可得到全部要求的结果。

修正后代码

简化写法(无需单独函数)

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    ' 读取用户输入的每月固定存款额
    Dim monthlyDeposit As Decimal = CDec(txtAmount.Text)
    ' 清空历史输出结果
    lstResults.Items.Clear()
    
    Dim currentBalance As Decimal = 0
    ' 循环计算前4次存款后的余额
    For i As Integer = 1 To 4
        currentBalance = 1.005D * currentBalance + monthlyDeposit
        ' 格式化为货币类型后添加到列表
        lstResults.Items.Add(currentBalance.ToString("C"))
    Next
End Sub

保留计算函数的写法

如果你需要保留单独的计算函数,可按如下方式调整:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim monthlyDeposit As Decimal = CDec(txtAmount.Text)
    lstResults.Items.Clear()
    For i As Integer = 1 To 4
        lstResults.Items.Add(CalcBalance(monthlyDeposit, i).ToString("C"))
    Next
End Sub

' 计算指定存款次数后的余额
Function CalcBalance(monthlyDeposit As Decimal, depositTimes As Integer) As Decimal
    Dim balance As Decimal = 0
    For i As Integer = 1 To depositTimes
        balance = 1.005D * balance + monthlyDeposit
    Next
    Return balance
End Function

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 09:27:03