Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Ein kleines Visual Basic Problem

wfoc / 6 Antworten / Baumansicht Nickles

Habe noch nicht viel Programmiererfahrung. Schon das untenstehende Beispiel überfordert mich ein wenig.
Es ist ein sehr einfaches Programm mit den Textfelder txt1, text2, text3.
In text3 soll der Benutzer die Summe von text1 und text2 eintragen.
Es klappt durchaus bei einigen Aufgaben, aber bei Kommazahlen erfolgt manchmal die Meldung "Falsch", obwohl das richtige Ergbnis eingegeben wurde!!!!
Wäre sehr dankbar für einen Tipp, was an dem Code falsch ist!


Option Explicit
Dim a As Single
Dim b As Single
Dim c As Single


Private Sub Form_Load()
Call NeueAufgabe
End Sub

Private Sub NeueAufgabe()
a = Int(Rnd * 100) / 100
b = Int(Rnd * 100) / 10
Text1.Text = a
Text2.Text = b
End Sub


Private Sub Command2_Click()
c = Text3.Text
If c = a + b Then
MsgBox "Richtig"
Call NeueAufgabe
Else
MsgBox "Falsch"
End If
End Sub

bei Antwort benachrichtigen
T-Rex wfoc „Ein kleines Visual Basic Problem“
Optionen

Das Problem liegt an der internen Darstellung der Fließkommazahlen.

Wandel die Zahlen in Strings um (geht mit CStr), dann vergleiche die entsprechenden Stellen der Zahl (geht mit Left), dann solltest Du das Problem nicht mehr bekommen.


Grüße
T-Rex

PS: Möchtest Du es zuerst selbst versuchen oder brauchst Du direkt ein Beispiel?


PPS:
Hier (ActiveVB.de) wird Dir in der Regel schneller geholfen, da es ein reines VB-Forum ist.

 GrüßeT-Rex 
bei Antwort benachrichtigen
wfoc T-Rex „Das Problem liegt an der internen Darstellung der Fließkommazahlen. Wandel die...“
Optionen

Das hilft mir schon. Damit ich es wirklich möglichst elegant
schaffe, wäre mir ein kleines Beispiel sehr lieb!
Vielen Dank!

bei Antwort benachrichtigen
T-Rex wfoc „Das hilft mir schon. Damit ich es wirklich möglichst elegant schaffe, wäre mir...“
Optionen

Habe jetzt nicht viel geändert:




Grüße
Helge

 GrüßeT-Rex 
bei Antwort benachrichtigen
wfoc T-Rex „Habe jetzt nicht viel geändert: Grüße Helge “
Optionen

Das war ein Volltreffer! Bin bestens zufrieden.
Allerbesten Dank für deine Hilfe!

Evt. ist da nur noch ein einziges Problem: Wenn ich bei 2,3 + 0,7 als Ergebnis 3,0 eingebe, kommt die Meldung "Falsch". Könnte das daran liegen, das "Round" (ist mir auch nicht bekannt, aber das heißt nichts) nicht definiert ist? Mein VB5 streikte bei dem Begriff jedenfalls und ich musste "Round" aus dem Code entfernen!
Ansonsten nochmals vielen Dank!
Grüße aus dem Emsland von werner focke

bei Antwort benachrichtigen
T-Rex wfoc „Das war ein Volltreffer! Bin bestens zufrieden. Allerbesten Dank für deine...“
Optionen

Das hatte ich nicht getestet.
Wahrscheinlich stört er sich jetzt an dem Komma.

Ergänze mal den Code so:



Grüße aus Kölle
Helge


PS: Ob Round() in VB5 zur Verfügung steht, weiß ich nicht. Habe nur VB6.

 GrüßeT-Rex 
bei Antwort benachrichtigen
wfoc T-Rex „Das hatte ich nicht getestet. Wahrscheinlich stört er sich jetzt an dem Komma....“
Optionen

Danke für den Hinweis!
Komme durch deine Tipps gut voran!
werner Focke

bei Antwort benachrichtigen