Contents
- 1 INF (infinity)
- 2 NAN (Not a Number)
- 3 Null
- 4 See Also
INF
(„infinity”), NAN
(„nie jest liczbą”), oraz Null
są stałymi systemowymi o specjalnej wartości, które Analytica zwraca w określonych warunkach, takich jak wyjątki. Stałe te mogą być również używane jako wartości w wyrażeniach.
Stała | Znaczenie |
---|---|
INF |
Nieskończoność lub liczba rzeczywista większa niż można ją przedstawić, np, 1/0 |
NAN |
Liczba nieokreślona, czyli wartość liczbowa, która nie jest dobrze zdefiniowana, np. 0/0 . Nazwa kodowa NAN cierpi z powodu niefortunnego historycznego błędnego nazewnictwa, ponieważ oznacza „Not A Number”; jednak jest uważana za numeryczny typ danych, a zatem IsNumber(NAN) jest prawdziwe. |
Null |
Wynik operacji, w której nie ma pożądanych danych, takich jak
|
INF (nieskończoność)
INF jest wynikiem obliczeń numerycznych, które są matematycznie nieskończone, takich jak:
1/0 → INF
INF jest również wynikiem obliczeń, które dałyby liczbę większą niż 1.797 x10+308
, która jest największą liczbą zmiennoprzecinkową, jaką Analytica może reprezentować:
10^1000 → INF
INF może być dodatnia lub ujemna:
-1 * 10^1000 → -INF
-1/0 → -Inf
Więc -INF oznacza ujemną nieskończoność (lub liczbę poniżej -1.796E308
).
Z INF można wykonywać użyteczne, matematycznie poprawne działania arytmetyczne, takie jak:
INF + 10 → INF
INF/0 → INF
10 - INF → -INF
100/0 = INF → True
NAN (Not a Number)
NaN jest wynikiem nieokreślonego obliczenia numerycznego, w tym funkcji numerycznych, których parametr znajduje się poza ich dziedziną, takich jak”
INF - INF → NAN
0/0 → NAN
INF/INF → NAN
Sqrt(-1) → NAN
ArcSin(2) → NAN
(Jeśli włączysz opcję Complex Numbers, Sqrt(-1) zwraca poprawną liczbę urojoną, 1j.)
Zazwyczaj pojawia się ostrzeżenie, jeśli zastosujesz funkcję do wartości parametru spoza jej zakresu, tak jak w dwóch powyższych przykładach – chyba że zaznaczyłeś opcję „Ignoruj ostrzeżenia”.
Każda operacja arytmetyczna, porównanie lub funkcja zastosowana do NaN zwraca NaN:
0/0 <> NAN → NAN
Prezentacja i traktowanie INF i NaN w programie Analityka jest zgodne ze standardami ANSI (Association of National Standards Institutes) oraz standardami zmiennoprzecinkowymi IEEE. NaN to skrót od „Not A Number”, co jest nieco mylące, ponieważ NaN jest w rzeczywistości rodzajem liczby. Możesz wykryć NaN w wyrażeniu używając funkcji IsNaN().
Obliczenia wykonywane za pomocą INF i NaN są zgodne z prawami matematyki:
1/INF → 0
1/(-INF) → 0
INF + INF → INF
INF - INF → NAN
Wyrażenia przyjmujące NaN jako operand lub parametr dają NaN jako wynik, chyba że wyrażenie ma dobrze zdefiniowaną wartość logiczną lub liczbową dla dowolnej wartości NaN:
True OR NAN → True
NAN AND False → False
IF True THEN 5 ELSE NAN → 5
Null
Null
jest wynikiem, który jest źle zdefiniowany, zwykle wskazując, że nie ma nic w żądanym miejscu, na przykład indeks wykorzystujący wartość, która nie pasuje do wartości indeksu:
Index I := 1..5
X → Null
Inne operacje i funkcje, które mogą zwrócić Null obejmują Slice(), Subscript(), Subindex() i MdTable(), np.g.
Index Year :=
Slice(Year, 4) → NULL
Variable X := Array(Year, )
X → NULL
Możesz przetestować dla Null używając standardowych operatorów = lub <>, takich jak:
X = Null → True
lub możesz użyć IsNull(X)
. Jednak x=Null
i IsNull(x)
są różne, gdy x
może być tablicą. x=Null
jest porównaniem na poziomie komórek, gdzie każda komórka jest testowana pod kątem równości z Null, a wynik ma ten sam wymiar co x
, podczas gdy IsNull(x)
testuje, czy cała wartość jest dokładnie Null. Gdy x
jest tablicą, w której każda komórka jest równa Null, IsNull(x)
jest fałszywe.
Gdy Null pojawia się w operacjach skalarnych, generalnie daje ostrzeżenie i ocenia na Null, na przykład:
10 + Null → Null
Null - 10 → Null
1 AND Null → Null
Funkcje redukujące tablicę ignorują Null. Te przykłady demonstrują (załóżmy, że A
jest indeksowane przez I
, jak wskazano).
variable A :=
I ▶ | ||||
---|---|---|---|---|
1 | 2 | 3 | 4 | 5 |
8 | Null | 4 | Null | 0 |
Then
Sum(A, I) → 12
Average(A, I) → 4
JoinText(A, I, ', ') → "8, 4, 0"
Graphs will simply ignore (not show) any point whose value is Null.
Funkcje redukujące tablicę zawierają Sum(), Min(), Max(), ArgMin(), ArgMax(), Product(), Average(), JoinText(), Irr(), Npv().
Regresja() ignoruje również wszelkie punkty danych, które mają Y = Null
, co jest przydatne w przypadku brakujących danych.
Zobacz także
- INF, NAN, i Null
- IsNaN
- IsNull
- Liczby
- Błędy wynikające z wartości Null
.