我在为我的班级工作的这个程序遇到了一些问题。它是一个未来值计算器,它采用单个数据类型,十进制数据类型和整数数据类型执行公式,然后吐出Future值。我遇到的困难是将字符串转换过来。我们还没有介绍如何在课堂上做到这一点,导师给我们买的那本书并不是很好。到目前为止,我会发布我的代码,希望你可以帮助我。
Public Class Form1
'Define the Module level variables
Dim FutureValueInteger As Integer
Private Sub CalculateButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CalculateButton.Click
'Define the local variables
Dim InitialIvestmentDecimal As Decimal
Dim RateSingle As Single
Dim YearsInteger As Integer
Try 'Try the Initial investment
InitialIvestmentDecimal = Decimal.Parse(InitialInvestmentTextBox.Text)
Try 'Try the Rate
RateSingle = Single.Parse(RateTextBox.Text)
Try 'Try the years
YearsInteger = Integer.Parse(YearsTextBox.Text)
Try 'Try the math
FutureValueInteger = InitialIvestmentDecimal * (1 * RateSingle) ^ YearsInteger
FutureValueLabel.Text = FutureValueInteger.ToString("C")
Catch ex As Exception 'Catch the math
End Try
Catch ex As Exception 'Catch the years
End Try
Catch ex As Exception 'Catch the Rate
End Try
Catch ex As Exception 'Catch the Initial investment
End Try
End Sub
End Class
答案 0 :(得分:0)
我假设您使用的是Visual Studio。您熟悉立即窗口吗? http://dotnetdud.blogspot.com/2007/12/visual-studio-immediate-window.html
基本上,它可以帮助您调试这样的问题。
? InitialIvestmentDecimal * (1 * RateSingle) ^ YearsInteger
返回值0.15187503017485382
当您尝试将'FutureValueInteger'=设置为0.15时...最终得到0.整数无法处理小数点后的信息。
看起来你的公式错了。
http://www.calculatorsoup.com/calculators/financial/future-value.php
你可能想要这样的东西......
FutureValueInteger = InitialIvestmentDecimal * (1 + RateSingle) ^ YearsInteger
FutureValueInteger仍然是一个整数 - 所以你的结果将是4023而不是4022.71。你可能最好将FuturevalueInteger设为Decimal和舍入。
看看Math.Round