VisualBasic Hochzählen mit Double

HelloSpencer

Ensign
Registriert
März 2011
Beiträge
137
Hallo ich übe zur Zeit mit dem Galileo Openbook VB .

Bin zwar schon etwas weiter wie diese Aufgabe , jedoch habe ich eines immer noch nicht so richtig verstanden.

Eine Aufgabe war es mal, einen einfachen statischen Hochzähler zu programmieren.
Das war auch kein Problem zu Programmieren , jedoch funktionierte nur der Datentyp "String" .
Eigentlich hätte ich Double nehmen wollen. Jedoch zählt er dann nur bis 5,8 sauber hoch . Bei 5,9 siehts dann plötzlich so aus .
Habs nochmal auf Double umgeändert.

Hat das was mit meinem 64Bit OS zu tun ?






Code:
Public Class Form1
    Private x As Double

    Private Sub cmdAnzeigen1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAnzeigen1.Click
        Static y As Double
        x = x + 0.1
        y = y + 0.1

        lblAnzeige.Text = "y:" & y &
         vbCrLf &
         "x(statisch):" & x

    End Sub


    Private Sub cmdAnzeigen2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdAnzeigen2.Click
        ' String , da sauber hoch zählt  
        Static z As Double
        z = z + 0.1
        x = x + 0.1
        lblAnzeige.Text = "z:" & z &
            vbCrLf &
            "x (statisch):" & x

    End Sub


    Private Sub lblAnzeige_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblAnzeige.Click
        
       

    End Sub
End Class
 
Endlich darf ich das auch mal sagen...

Double ist nicht exakt, d.h. es lässt sich nicht jede Zahl genau darstellen.
bsp.: 6 ist in double halt 5.99999999999.

Ich empfehle dich mit IEEE 754 zu befassen
anscheinend a guter artikel
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

finde nix auf deutsch aber als programmierer solltest du sowieso englisch können :)
 
Danke für die schnelle Antwort !
In der Lösung hat der Programmierer sogar Double benutzt tztz... .

Aber man kann doch sicherlich auch sagen das er Runden soll , dann müsste es doch gehen oder ?

String ist meiner Meinung nach eh der Streßfreiste Datentyp .

Danke für den Link , ich werde Ihn lesen . In den Zeiten von Onlinewörterbüchern kein Problem :P .
 
Ansonsten mach einfach round(y,1) , dann rundet er es auf eine Stelle. dann sollte er es richtig anzeigen.
 
Zurück
Oben