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
相关产品推荐
相关产品推荐

