Преобразуйте строку в двойную и сложите для итога - PullRequest
0 голосов
/ 12 июля 2020

Я относительно новичок в программировании. Я пытаюсь понять, почему мои часы в день не конвертируются в числа, которые затем складываются. Вместо этого они просто берут эти строки и записывают их как строки и составляют огромное число.

Например: если я работал 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

1 Ответ

0 голосов
/ 12 июля 2020

Поскольку ваши переменные определены как строки, этот код объединяет значения:

strMon + strTues + strWed + strThurs + strFri

В VB. Net вы можете объединить, используя + или &

Преобразуйте эти переменные в тип данных double (чтобы сохранить десятичную часть):

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

Затем оператор + сложит переменные вместе.

...