在VB.NET 2010中转换多个数值数据类型?

时间:2011-05-07 20:45:56

标签: vb.net visual-studio-2010 primitive-types

我在为我的班级工作的这个程序遇到了一些问题。它是一个未来值计算器,它采用单个数据类型,十进制数据类型和整数数据类型执行公式,然后吐出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

1 个答案:

答案 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