首页 > 解决方案 > 将字符串转换为双精度并添加总计

问题描述

我对编码比较陌生。我试图弄清楚为什么我每天的小时数没有转换为然后加在一起的数字。取而代之的是,他们只是将这些字符串写成字符串并产生巨大的数字。

例如:如果我每天工作 8 小时 MF,它会显示 88888 而不是 40(一周总共 40 小时)。我确实将字符串转换为双精度,然后将它们加在一起。

任何帮助表示赞赏。周末我没有老师可以请教。

 Public Class Form1
    Private Sub btnCalc_Click(sender As Object, e As EventArgs) Handles btnCalc.Click
        ' Get file
        Dim srdFile As System.IO.StreamReader
        srdFile = New System.IO.StreamReader("payroll.txt")

        ' Declarations
        Dim strLine, strRecord() As String
        Dim strFirst As String
        Dim strLast As String
        Dim strPayRate As String
        Dim strMon As String
        Dim strTues As String
        Dim strWed As String
        Dim strThurs As String
        Dim strFri As String
        Dim dblTotalHours As Double
        Dim dblTotalPay As Double
        Dim dblGrandTotalPay As Double


        Do Until srdFile.Peek = -1
            ' Read
            strLine = srdFile.ReadLine
            strRecord = strLine.Split(",")
            strFirst = strRecord(0)
            strLast = strRecord(1)
            strPayRate = Convert.ToDouble(strRecord(2))
            strMon = Convert.ToDouble(strRecord(3))
            strTues = Convert.ToDouble(strRecord(4))
            strWed = Convert.ToDouble(strRecord(5))
            strThurs = Convert.ToDouble(strRecord(6))
            strFri = Convert.ToDouble(strRecord(7))
            ' Processing 
            dblTotalHours = strMon + strTues + strWed + strThurs + strFri
            dblTotalPay = dblTotalHours * strPayRate
            dblGrandTotalPay += dblTotalPay
            ' Output
            rtbOut.AppendText(strFirst & " " & strLast & ControlChars.Tab & "rate: $" & strPayRate.ToString & ControlChars.Tab & "hours: " & dblTotalHours.ToString("n") & ControlChars.Tab & "pay: " &
            dblTotalPay.ToString("c") & vbNewLine & "Total Pay: " & dblGrandTotalPay.ToString("c") & vbNewLine)
        Loop


    End Sub
End Class

标签: vb.netwinforms

解决方案


因为您的变量被定义为字符串,所以此代码将这些值连接起来:

strMon + strTues + strWed + strThurs + strFri

在 VB.Net 中,您可以使用 + 或 & 进行连接

将这些变量转换为双精度数据类型(以保留小数部分):

Dim strMon As Double
Dim strTues As Double
Dim strWed As Double
Dim strThurs As Double
Dim strFri As Double

然后 + 运算符会将变量加在一起。


推荐阅读