Fehlerbeschreibung
BCD-Exponent zu groß
Unzulässiges HEX-, Oktal oder Dezimal-Argument
Hinweise zur Anwendung von Vergleichsoperatoren
Beim Vergleichen von Integer-Werten sind keine besondern Vorsichtsmaßnahmen
erforderlich. Beim Vergleichen von REAL-Werten (insbesondere Ergebnissen von
Berechnungen) können jedoch Probleme auftreten, beispielsweise durch
Rundungsfehler oder sonstige systeminhärente Beschränkungen. Hierzu ein
Beispiel. In dem folgenden Programm ist das Ziel einer bedingten Verzweigung
(IF...THEN) vom Ergebnis einer Vergleichsoperation abhängig.
10 OUTPUT 722; "SUB TESTER"
20 OUTPUT 722; "LET A=25.3765477"
30 OUTPUT 722; "IF SIN(A)^2 + COS(A)^2 = 1 THEN"
40 OUTPUT 722; " DISP 'EQUAL'"
50 OUTPUT 722; "ELSE"
60 OUTPUT 722; " DISP'NOT EQUAL'"
70 OUTPUT 722; " ENDIF"
80 OUTPUT 722; "SUBEND"
90 !
100 OUTPUT 722; "CALL TESTER"
110 END
Obwohl die Summe aus Sinus- und Cosinus-Quadrat eines beliebigen Wertes
stets exakt 1 ist, kann der Vergleich in Zeile 30 infolge von Rundungsfehlern oder
sonstigen inhärenten Beschränkungen finiter Zustandsmaschinen das Ergebnis
"ungleich" liefern. Unendlich periodische Dezimalzahlen oder irrationale Zahlen
lassen sich in einer finiten Zustandsmaschine, wie sie im 3458A verwendet wird,
prinzipiell nicht exakt darstellen.
Gute Beispiele für derartige Fehler erlebt man immer wieder beim Multiplizieren
oder Dividieren von Zahlen: Die Anzahl der Dezimalstellen des Produkts zweier
nicht ganzzahliger Werte ist fast immer größer als die Summe der Anzahlen der
Dezimalstellen der beiden Operanden.
Keysight 3458A Benutzerhandbuch
BASIC-Programmiersprache für das 3458A
7
445