Innehåll
- 1 INF (infinity)
- 2 NAN (Not a Number)
- 3 Null
- 4 Se även
INF
(”infinity”), NAN
(”not a number”) och Null
är systemkonstanter med särskilda värden som Analytica returnerar under särskilda förhållanden, t.ex. undantag. Dessa konstanter kan också användas som värden i uttryck.
Konstant | Betydelse |
---|---|
INF |
Oändlighet eller ett reellt tal som är större än vad som kan representeras, t.ex, 1/0 |
NAN |
Ett obestämt tal, vilket är ett numeriskt värde som inte är väldefinierat, till exempel 0/0 . Kodnamnet NAN lider av en olycklig historisk felbenämning i och med att det står för ”Not A Number”; det anses dock vara en numerisk datatyp, och därmed är IsNumber(NAN) sant. |
Null |
Resultatet av en operation där de önskade uppgifterna inte finns där, t.ex.
|
INF (oändlighet)
INF är resultatet av en numerisk beräkning som är matematiskt oändlig, t.ex:
1/0 → INF
INF är också resultatet av en beräkning som skulle ge ett tal som är större än 1.797 x10+308
, vilket är det största flyttal som Analytica kan representera:
10^1000 → INF
INF kan vara positivt eller negativt:
-1 * 10^1000 → -INF
-1/0 → -Inf
Så -INF betyder negativ oändlighet (eller ett tal som ligger under -1.796E308
).
Du kan utföra användbar, matematiskt korrekt aritmetik med INF, t.ex:
INF + 10 → INF
INF/0 → INF
10 - INF → -INF
100/0 = INF → True
NAN (Not a Number)
NaN är resultatet av en obestämd numerisk beräkning, inklusive numeriska funktioner vars parameter ligger utanför deras domän, t.ex.”
INF - INF → NAN
0/0 → NAN
INF/INF → NAN
Sqrt(-1) → NAN
ArcSin(2) → NAN
(Om du aktiverar komplexa tal returnerar Sqrt(-1) det giltiga imaginära talet, 1j.)
Det ger vanligtvis en varning om du tillämpar en funktion på ett parametervärde utanför dess intervall, som i de två exemplen ovan – om du inte har markerat ”Ignorera varningar”.
Alla aritmetiska operationer, jämförelser eller funktioner som tillämpas på NaN returnerar NaN:
0/0 <> NAN → NAN
Analytica representerar och behandlar INF och NaN i enlighet med ANSI:s (Association of National Standards Institutes) standarder och IEEE:s standarder för flytande punkter. NaN står för ”Not A Number”, vilket är lite missvisande, eftersom NaN verkligen är ett slags tal. Du kan upptäcka NaN i ett uttryck med hjälp av funktionen IsNaN().
Beräkningar som utförs med INF och NaN följer matematikens lagar:
1/INF → 0
1/(-INF) → 0
INF + INF → INF
INF - INF → NAN
Uttryck som tar NaN som operand eller parameter ger NaN som resultat om inte uttrycket har ett väldefinierat logiskt eller numeriskt värde för något värde av NaN:
True OR NAN → True
NAN AND False → False
IF True THEN 5 ELSE NAN → 5
Null
Null
är ett resultat som är dåligt definierat, vilket vanligtvis indikerar att det inte finns något på den plats som efterfrågas, t.ex. ett subscript som använder ett värde som inte stämmer överens med ett värde i indexet:
Index I := 1..5
X → Null
Andra operationer och funktioner som kan ge Null inkluderar Slice(), Subscript(), Subindex(), och MdTable(), e.g.
Index Year :=
Slice(Year, 4) → NULL
Variable X := Array(Year, )
X → NULL
Du kan testa för Null med hjälp av standardoperatorerna = eller <>, till exempel:
X = Null → True
eller du kan använda IsNull(X)
. x=Null
och IsNull(x)
är dock olika när x
kan vara en array. x=Null
är en jämförelse på cellnivå, där varje cell testas för likhet med Null, där resultatet har samma dimensionalitet som x
, medan IsNull(x)
testar om hela värdet är exakt Null. När x
är en array där varje cell är lika med Null är IsNull(x)
falsk.
När Null förekommer i skalära operationer ger det i allmänhet en varning och utvärderas till Null, till exempel:
10 + Null → Null
Null - 10 → Null
1 AND Null → Null
Array-reducerande funktioner ignorerar Null. Dessa exempel visar detta (anta att A
indexeras av I
enligt vad som anges).
variable A :=
I ▶ | |||||
---|---|---|---|---|---|
1 | 2 | 3 | 4 | 4 | 5 |
8 | Null | 4 | Null | 0 |
Then
Sum(A, I) → 12
Average(A, I) → 4
JoinText(A, I, ', ') → "8, 4, 0"
Graferna ignorerar helt enkelt (visar inte) alla punkter vars värde är Null.
Array-reducerande funktioner inkluderar Sum(), Min(), Max(), ArgMin(), ArgMax(), Product(), Average(), JoinText(), Irr(), Npv().
Regression() ignorerar också alla datapunkter som har Y = Null
, vilket är användbart för saknade data.
Se även
- INF, NAN och Null
- IsNaN
- IsNull
- Tal
- Fel till följd av nollvärden