SGN
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]
Wikipedia: Signumfunktion |
ABS | AND | ASC | ATN | CHR$ | CLOSE | CLR | CMD | CONT | COS | DATA | DEF | DIM | END | EXP | FN | FOR | FRE | GET | GET# | GOSUB | GOTO | IF | INPUT | INPUT# | INT | LEFT$ | LEN | LET | LIST | LOAD | LOG | MID$ | NEW | NEXT | NOT | ON | OPEN | OR | PEEK | POKE | POS | PRINT | PRINT# | READ | REM | RESTORE | RETURN | RIGHT$ | RND | RUN | SAVE | SGN | SIN | SPC | SQR | STATUS/ST | STEP | STOP | STR$ | SYS | TAB | TAN | THEN | TIME/TI | TIME$/TI$ | TO | USR | VAL | VERIFY | WAIT