Frage von koebesbloomi, 33

Kennt sich jemand gut mit Visual Basic aus und kann vielleicht helfen?

Habe folgendes Problem. Ein Programm soll durch den Klick auf einen Button eine Vergleichsformel berechnen und mir durch "True" oder "False" angeben, ob die Formel richtig oder falsch ist. Den Code dazu findet ihr auf dem Bild.

Die Formel ist falsch, daher sollte mir das Programm die Antwort "False" ausgeben. Das tut es aber nicht. Es gibt die Antwort "True" aus und ich kann meinen Fehler nicht finden.

Vielen dank für eure Hilfe

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von CrystalixXx, 17

Du hast "a" als Integer deklariert und weist "a" eine Gleitkommazahl zu. Dadurch enthält "a" tatsächlich nur eine 2 und keine 2,4. Das wiederrum hat zur Folge, dass deine Formel

9 >= 8

lautet. Das ergibt dann natürlich "True".

PS: Ich empfehle "Option Strict" auf On zu stellen. damit wird das implizierte Konvertieren von Datentypen erzwungen. Das minimiert solche ungewollten Verhaltensweisen.

Antwort
von Herb3472, 30
If (x-y) >= (z*a) then
        Msgbox "True"
Else
        Msgbox "False"
End if



Kommentar von koebesbloomi ,

Ich will das ohne Schleife schreiben. Die einzige Möglichkeit, die mich zum richtigen Ergebnis bringt ist, wenn ich noch eine weitere Variable als Boolean deklariere, dann in dieser Variable die Formel rein schreibe und dann das Label nur den Wert dieser Variable ausgeben lasse also:

Dim m As Boolean

m= 12-3 >= 4*2,5

lblAnzeige.Text = m

Dann funktionierts. Ich will aber wissen warum das ohne die Variable m nicht funktioniert.

Kommentar von Herb3472 ,

Ich will das ohne Schleife schreiben.

Wo ist da bitte eine Schleife?

Das ist eine if-then-else-Abfrage, aber doch bitte keine Schleife!

Wenn Du einen Boole'schen Wert ausgeben willst, brauchst Du auch eine Boole'sche Variable. Ist doch klar, oder?

Kommentar von koebesbloomi ,

Ja verzeihung...

Auch wenn ich keine Boolean-Variable eingebe, bekomme ich einen Boolean-Wert raus. Nur den falschen. Aber warum?

Kommentar von CrystalixXx ,

Die Begründung findest du in meiner Antwort, falls das immer noch relevant ist.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten