MB/KB Zahlen runden?

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von singu.

    MB/KB Zahlen runden?

    Hi ich habe einen Download_Event der eine Datei runterlädt und nun möchte ich die gedownloadeten MB und die noch übrigen MB anzeigen lassen, mein Code:

    VB.NET-Quellcode

    1. Private Sub downloader_DownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs) Handles downloader.DownloadProgressChanged
    2. Dim downloaded As String = e.BytesReceived / 1024
    3. Dim mussdownloaden As String = e.TotalBytesToReceive / 1024
    4. ProgressBar1.Value = e.ProgressPercentage
    5. Label7.Text = e.BytesReceived / 1024 & " MB/" & e.TotalBytesToReceive / 1024 & " MB" 'Leider zeigt er mir 351.3123123 MB oder so was an
    6. End Sub


    Math.Round() kapier ich irgendwie nicht....

    Mfg
    Der erste Parameter von Math.Round ist der Wert, der gerundet werden soll und der 2. Parameter ist die Anzahl der Dezimalstellen.

    Um die MB zu bekommen, musst du 2x "/ 1024" machen, also:

    VB.NET-Quellcode

    1. ((e.BytesReceived / 1024) / 1024)
    Bei Math.Round(downloaded,1) kommt ein Fehler...

    VB.NET-Quellcode

    1. downloaded = Math.Round(downloaded, 1)


    Fehler:
    Spoiler anzeigen
    Fehler 1 Fehler bei der Überladungsauflösung, da keine zugreifbare "Round" ohne einschränkende Konvertierung aufgerufen werden kann:
    "Public Shared Function Round(d As Decimal, mode As System.MidpointRounding) As Decimal": Der mit dem Argument übereinstimmende Parameter "d" wird von "String" auf "Decimal" reduziert.
    "Public Shared Function Round(d As Decimal, mode As System.MidpointRounding) As Decimal": Der mit dem Argument übereinstimmende Parameter "mode" wird von "Integer" auf "System.MidpointRounding" reduziert.
    "Public Shared Function Round(d As Decimal, decimals As Integer) As Decimal": Der mit dem Argument übereinstimmende Parameter "d" wird von "String" auf "Decimal" reduziert.
    "Public Shared Function Round(value As Double, mode As System.MidpointRounding) As Double": Der mit dem Argument übereinstimmende Parameter "value" wird von "String" auf "Double" reduziert.
    "Public Shared Function Round(value As Double, mode As System.MidpointRounding) As Double": Der mit dem Argument übereinstimmende Parameter "mode" wird von "Integer" auf "System.MidpointRounding" reduziert.
    "Public Shared Function Round(value As Double, digits As Integer) As Double": Der mit dem Argument übereinstimmende Parameter "value" wird von "String" auf "Double" reduziert. D:\Dokumente und Einstellungen\Dominic Poppe\Desktop\Dark Shadow\Launcher\WindowsApplication1\WindowsApplication1\Form1.vb 188 22 WindowsApplication1


    Mfg
    lol!
    diese zeile sollte dir alles erklären:
    Dim asdf As String = Math.Round(CDbl("3,1234"), 1).ToString

    asdf => ist ein STRING
    math.round(Double,Dezimalstellen)
    CDbl("3,1234") macht aus dem STRING "3,1234" eine Double mit dem Wert 3,1234. dieser wird gerundet
    .tostring => die Math.Round funktion gibt ein Double zurück. dieser wird in einen String umgewandelt
    Für das was du machen möchtest, würde ich die String.Format-Funktion verwenden.

    VB.NET-Quellcode

    1. Label7.Text = String.Format("{0:0.00} MB von {1:0.00} MB",
    2. e.BytesReceived / 1024, e.TotalBytesToReceive / 1024)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Infinity“ ()