Tutorial
Vergleiche von Double- und Integer-Zahlen
von ytwinky | Seite 1 von 3 |
Vergleichen in FreeBASIC ist einfach, weil der Compiler dafür viele Operatoren hat.
Doch ist es damit schon getan? Nein!
Hier geht es jetzt nicht darum, die zu vergleichenden (Teil-)Ausdrücke sorgfältig einzuklammern, damit richtige Ergebnisse erzielt werden..
Es sollte jedem klar sein, dass (a+b)<c ein anderes Ergebnis liefert als a+(b<c).
Nehmen wir mal ein Beispiel(also eins, bei dem die Probleme gleich auftreten..):
Const FALSE=0, TRUE=Not FALSE
Dim As Integer i=1, j=3 'Deklarieren von zwei Integer-Variablen
Print "i=" &i &!"\nj=" &j 'Ausgeben der Variablen auf dem Bildschirm
Print "i/j=" &(i/j) &!"\n1/3=" &(1/3) 'Ausgabe der Quotienten auf dem Bildschirm
Print "i=j?";
Select Case i=j 'Prüfen, ob i=j ist..
Case TRUE 'ja, dann..
Print " True" '..Meldung ausgeben
Case Else 'Dann kann es nur FALSE sein..
Print " False, ";
Print *IIf(i<j, @"i<j", @"i>j")
End Select
Print !"\nEniki..";
GetKey 'ist besser als Sleep, denn der Tastaturpuffer wird gelöscht^^
Wir 'sehen' auch, dass auch die Ergebnisse der Divisionen 'gleich' sind, aber halt:
Lassen wir das doch vom Rechner überprüfen..
Const FALSE=0, TRUE=Not FALSE
Dim As Integer i=1, j=3
Dim As Double d=i/j 'freundlicherweise ermittelt FB gleich das doppeltgenaue Ergebnis..
Print "i/j=1/3 " &*IIf(i/j=1/3, @"True", @"False") 'Ergebnisse vergleichen..
Print "i/j=d " &*IIf(i/j=d, @"True", @"False") 'Quotienten mit dem doppeltgenauen Ergebnis vergleichen
Print !"\nEniki..";
GetKey
Ooops, das sieht aber überhaupt nicht beruhigend aus!
Halten wir ersteinmal fest:
Integer-Variablen lassen sich untereinander ohne Probleme auf '=', '<>', '<', '>' (u.v.m.) prüfen.
Wieso wir das gerade jetzt festhalten? Na, weil wir mit der Division den Bereich der Integers(also ganzen Zahlen) verlassen haben..
Zusätzliche Informationen und Funktionen | |||||||
---|---|---|---|---|---|---|---|
|