Inhalt
- 1 INF (infinity)
- 2 NAN (Not a Number)
- 3 Null
- 4 Siehe auch
INF
(„infinity“), NAN
(„keine Zahl“) und Null
sind speziell bewertete Systemkonstanten, die Analytica unter bestimmten Bedingungen, z. B. bei Ausnahmen, zurückgibt. Diese Konstanten können auch als Werte in Ausdrücken verwendet werden.
Konstante | Bedeutung |
---|---|
INF |
Unendlichkeit oder eine reelle Zahl, die größer ist als darstellbar, z.B., 1/0 |
NAN |
Eine unbestimmte Zahl, d. h. ein numerischer Wert, der nicht genau definiert ist, wie z. B. 0/0 . Der Codename NAN leidet unter einer unglücklichen historischen Fehlbenennung, da er für „Not A Number“ steht; er wird jedoch als numerischer Datentyp betrachtet, so dass IsNumber(NAN) wahr ist. |
Null |
Das Ergebnis einer Operation, bei der die gewünschten Daten nicht vorhanden sind, wie
|
INF (unendlich)
INF ist das Ergebnis einer numerischen Berechnung, die mathematisch unendlich ist, wie z.B.:
1/0 → INF
INF ist auch das Ergebnis einer Berechnung, die eine Zahl größer als 1.797 x10+308
ergeben würde, was die größte Fließkommazahl ist, die Analytica darstellen kann:
10^1000 → INF
INF kann positiv oder negativ sein:
-1 * 10^1000 → -INF
-1/0 → -Inf
So bedeutet -INF negative Unendlichkeit (oder eine Zahl unter -1.796E308
).
Mit INF kann man sinnvolle, mathematisch korrekte Rechenoperationen durchführen, wie z.B.:
INF + 10 → INF
INF/0 → INF
10 - INF → -INF
100/0 = INF → True
NAN (Not a Number)
NaN ist das Ergebnis einer unbestimmten numerischen Berechnung, einschließlich numerischer Funktionen, deren Parameter außerhalb ihres Bereichs liegen, z. B.“
INF - INF → NAN
0/0 → NAN
INF/INF → NAN
Sqrt(-1) → NAN
ArcSin(2) → NAN
(Wenn Sie Komplexe Zahlen aktivieren, liefert Sqrt(-1) die gültige imaginäre Zahl 1j.)
Gewöhnlich wird eine Warnung ausgegeben, wenn Sie eine Funktion auf einen Parameterwert anwenden, der außerhalb ihres Bereichs liegt, wie in den beiden obigen Beispielen – es sei denn, Sie haben „Warnungen ignorieren“ aktiviert.
Jede arithmetische Operation, jeder Vergleich oder jede Funktion, die auf NaN angewendet wird, gibt NaN zurück:
0/0 <> NAN → NAN
Analytica’s Darstellung und Behandlung von INF und NaN ist konsistent mit den ANSI (Association of National Standards Institutes) Standards und den IEEE Floating point Standards. NaN steht für „Not A Number“, was etwas irreführend ist, da NaN eigentlich eine Art von Zahl ist. Sie können NaN in einem Ausdruck mit der Funktion IsNaN() erkennen.
Berechnungen, die mit INF und NaN durchgeführt werden, folgen den Gesetzen der Mathematik:
1/INF → 0
1/(-INF) → 0
INF + INF → INF
INF - INF → NAN
Ausdrücke, die NaN als Operand oder Parameter annehmen, ergeben NaN als Ergebnis, es sei denn, der Ausdruck hat einen wohldefinierten logischen oder numerischen Wert für jeden Wert von NaN:
True OR NAN → True
NAN AND False → False
IF True THEN 5 ELSE NAN → 5
Null
Null
ist ein nicht definiertes Ergebnis, das in der Regel anzeigt, dass an der angeforderten Stelle nichts vorhanden ist, z. B. ein Subscript mit einem Wert, der nicht mit einem Wert des Index übereinstimmt:
Index I := 1..5
X → Null
Andere Operationen und Funktionen, die Null zurückgeben können, sind Slice(), Subscript(), Subindex() und MdTable(), z.z.B.
Index Year :=
Slice(Year, 4) → NULL
Variable X := Array(Year, )
X → NULL
Sie können mit den Standardoperatoren = oder <> auf Null testen, z.B.:
X = Null → True
oder Sie können IsNull(X)
verwenden. x=Null
und IsNull(x)
sind jedoch unterschiedlich, wenn x
ein Array sein kann. x=Null
ist ein Vergleich auf Zellebene, bei dem jede Zelle auf Gleichheit mit Null geprüft wird, wobei das Ergebnis die gleiche Dimensionalität wie x
hat, während IsNull(x)
prüft, ob der gesamte Wert genau Null ist. Wenn x
ein Array ist, bei dem jede Zelle gleich Null ist, ist IsNull(x)
falsch.
Wenn Null in skalaren Operationen auftaucht, erzeugt es im Allgemeinen eine Warnung und wird zu Null ausgewertet, zum Beispiel:
10 + Null → Null
Null - 10 → Null
1 AND Null → Null
Array-reduzierende Funktionen ignorieren Null. Diese Beispiele veranschaulichen dies (unter der Annahme, dass A
wie angegeben durch I
indiziert wird).
variable A :=
I ▶ | ||||
---|---|---|---|---|
1 | 2 | 3 | 4 | 5 |
8 | Null | 4 | Null | 0 |
Dann
Sum(A, I) → 12
Average(A, I) → 4
JoinText(A, I, ', ') → "8, 4, 0"
Die Diagramme ignorieren (zeigen) einfach jeden Punkt, dessen Wert Null ist.
Zu den arrayreduzierenden Funktionen gehören Sum(), Min(), Max(), ArgMin(), ArgMax(), Product(), Average(), JoinText(), Irr(), Npv().
Regression() ignoriert auch alle Datenpunkte, die Y = Null
haben, was bei fehlenden Daten nützlich ist.
Siehe auch
- INF, NAN und Null
- IsNaN
- IsNull
- Zahlen
- Fehler aufgrund von Nullwerten