SGN

Aus C64-Wiki
Zur Navigation springenZur Suche springen
SGN
Syntax: SGN(<Zahl>)
Parameter
<Zahl>: numerischer Ausdruck
Einordnung
Typ: numerische Funktion
Kontext: Arithmetik
Aufgabe: das Vorzeichen einer Zahl ermitteln
Abkürzung: sG
Token: $b4 (180)
Verwandte Befehle
ABS

Anmerkung: Dieser Artikel beschreibt numerische BASIC-Funktion SGN unter BASIC V2 des Commodore 64.


Die BASIC-Funktion SGN() (Signumfunktion) gibt abhängig vom Vorzeichen folgende Ergebnisse für das verwendete numerische Argument zurück:

  • 1 bei positivem Wert,
  • -1 bei negativem Wert und
  • 0 beim Wert Null.

Ergibt die Auswertung des Parameters keine Zahl, so erscheint die BASIC-Fehlermeldung ?TYPE MISMATCH ERROR. Es werden alle Zahlen akzeptiert, sofern der Parameter eine gültige Fließkommazahl ergibt. Fehlt das numerische Argument, so erscheint ein ?SYNTAX ERROR.

Beispiele[Bearbeiten | Quelltext bearbeiten]

PRINT SGN(-11) ergibt -1
PRINT SGN(0.0) ergibt  0
PRINT SGN(105) ergibt  1

Verwendung bei der Implementierung der FRAC(x)-Funktion (Ermittlung der Nachkommastellen):

100 DEF FN FRAC(X)=SGN(X)*(ABS(X) - INT(ABS(X)))
200 A=-31/6
210 PRINT A;FN FRAC(A)
-5.16666667 -0.16666666

Der Effekt einer Rundungsungenauigkeit kann hier beobachtet werden.

Die ABS()-Funktion mit Hilfe der SGN()-Funktion implementiert:

100 DEF FN NA(X)=X/(SGN(X)-(X=0))
200 FOR I=-10 TO 10 STEP 10
210 PRINT I,ABS(I),FN NA(I)
220 NEXT

Liefert für die Werte in der 1. Spalte den Absolutwert der internen Funktion in der 2. Spalte und in der 3. Spalte den Wert der nachgebildeten Funktion:

-10        10        10
 0         0         0
 10        10        10

Die neu definierte Funktion FN NA(X) deckt auch den Sonderfall mit Wert 0 ab, indem der zusätzlich Term -(X=0) den Wert 1 ergibt und somit eine Division durch 0 vermeidet.

Weblinks[Bearbeiten | Quelltext bearbeiten]

WP-W11.png Wikipedia: Signumfunktion