VAL
VAL | |
Syntax: | VAL(<Zahlenstring>) |
Parameter | |
<Zahlenstring>: Zeichenkettenausdruck | |
Einordnung | |
Typ: | numerische Funktion |
Kontext: | Arithmetik |
Aufgabe: | konvertiert eine in einer Zeichenkette enthaltene Zahl in ihre numerische Form |
Abkürzung: | vA |
Token: | $c5 (197) |
Verwandte Befehle | |
STR$, ASC |
Anmerkung: Dieser Artikel beschreibt numerische BASIC-Funktion VAL unter BASIC V2 des Commodore 64.
Die BASIC-Funktion VAL() wandelt eine als Zeichenkette (String) dargestellte Zahl in einen Datenwert vom Typ Zahl um.
Die Funktion VAL (engl. value) ermittelt den in der Zeichenkette enthaltenen Zahlenwert nach folgenden Regeln. Es kann sich um eine positive oder negative Zahl handeln. Leerzeichen, egal an welcher Stelle, werden dabei ignoriert. Das erste Minus- (−) bzw. Plus-Zeichen (+) in der Zeichenkette vor Ziffern oder Dezimalpunkt wird als Vorzeichen interpretiert. Die Suche nach dem Zahlenwert im String endet bei der ersten Nicht-Ziffer - davon ausgenommen sind der erste gefundene Punkt (.), der als Dezimalpunkt interpretiert wird, und das erste Vorkommen des Buchstabens "e" bzw. "E" (je nach Zeichensatz entsprechend CHR$(69)), gefolgt von einem optionalen Vorzeichen des dazugehörigen ganzzahligen Exponenten.
Sind keine verwertbaren Zeichen für eine Umwandlung in eine Zahl vorhanden, ist das Ergebnis die Zahl 0.
Werte unterhalb der Darstellungsgenauigkeit der Fließkommazahlen (Zahlen mit einem Absolutwert kleiner als 2.93873587440E-39) werden immer als 0 angesehen (abhängig von der Stellenanzahl, siehe auch Beispiele).
Mathematische Terme und Rechenoperationen werden nicht berücksichtigt.
Ist das Argument keine Zeichenkette, so erscheint die BASIC-Fehlermeldung ?TYPE MISMATCH ERROR. Für alle Zahlen außerhalb des Wertebereichs für Fließkommazahlen (−1.7014118345e+38 bis +1.7014118345e+38) wird die BASIC-Fehlermeldung ?OVERFLOW ERROR ausgegeben. Fehlt das Argument oder sind zu viele angegeben, folgt ein Abbruch mit der Meldung ?SYNTAX ERROR.
Beispiele[Bearbeiten | Quelltext bearbeiten]
Syntax[Bearbeiten | Quelltext bearbeiten]
PRINT VAL("A1") ergibt 0 PRINT VAL("- 1 2 3 . 2 3 4 e + 23") ergibt -1.23234e+25 PRINT VAL("1051 E-3 -1.051 C") ergibt 1.051 PRINT VAL(" .2 E3") ergibt 200 PRINT VAL("2 E 99") liefert Fehler ?OVERFLOW ERROR PRINT VAL("-1.2345e-999") ergibt 0, da kleiner als die Darstellungsgenauigkeit für Fließkommazahlen
Größter Betrag[Bearbeiten | Quelltext bearbeiten]
PRINT VAL("1.7014118345E+38")
zeigt den maximalen Betragswert 1.70141183e+38.
PRINT VAL("1.7014118346E+38")
liefert den Fehler ?OVERFLOW ERROR.
Kleinster Betrag[Bearbeiten | Quelltext bearbeiten]
PRINT VAL("2.93873588E-39") PRINT VAL("2.938735875E-39") PRINT VAL("2.9387358754E-39") PRINT VAL("2.93873587440E-39")
ergibt jeweils 2.93873588E-39, abhängig von der Stellenanzahl, wobei sich zusätzliche Stellen dann nicht mehr auswirken.
PRINT VAL("2.93873587E-39") PRINT VAL("2.938735874E-39") PRINT VAL("2.9387358753E-39") PRINT VAL("2.93873587439E-39")
ergeben als nächstkleinere Zahl korrespondierend zu obigen Zeilen (bei entsprechender Stellenzahl) immer 0.
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