Indhold
- 1 INF (uendelighed)
- 2 NAN (Not a Number)
- 3 Null
- 4 Se også
INF
(“uendelighed”), NAN
(“ikke et tal”) og Null
er systemkonstanter med særlig værdi, som Analytica returnerer under særlige forhold, f.eks. undtagelser. Disse konstanter kan også bruges som værdier i udtryk.
Konstant | Betydning |
---|---|
INF |
Uendelighed eller et reelt tal, der er større end det, der kan repræsenteres, f.eks, 1/0 |
NAN |
Et ubestemt tal, som er en numerisk værdi, der ikke er veldefineret, f.eks. 0/0 . Kodenavnet NAN lider under en uheldig historisk fejlbenævnelse, idet det står for “Not A Number”; det anses dog for at være en numerisk datatype, og derfor er IsNumber(NAN) sandt. |
Null |
Resultatet af en operation, hvor de ønskede data ikke er der, f.eks.
|
INF (uendelighed)
INF er resultatet af en numerisk beregning, der matematisk set er uendelig, f.eks:
1/0 → INF
INF er også resultatet af en beregning, der ville give et tal, der er større end 1.797 x10+308
, som er det største tal med flydende komma, som Analytica kan repræsentere:
10^1000 → INF
INF kan være positiv eller negativ:
-1 * 10^1000 → -INF
-1/0 → -Inf
Så -INF betyder negativ uendelighed (eller et tal under -1.796E308
).
Du kan udføre nyttig, matematisk korrekt aritmetik med INF, som f.eks:
INF + 10 → INF
INF/0 → INF
10 - INF → -INF
100/0 = INF → True
NAN (Not a Number)
NaN er resultatet af en ubestemt numerisk beregning, herunder numeriske funktioner, hvis parameter er uden for deres domæne, f.eks.”
INF - INF → NAN
0/0 → NAN
INF/INF → NAN
Sqrt(-1) → NAN
ArcSin(2) → NAN
(Hvis du aktiverer Complex Numbers, returnerer Sqrt(-1) det gyldige imaginære tal, 1j.)
Det giver normalt en advarsel, hvis du anvender en funktion på en parameterværdi uden for dens område, som f.eks. de to eksempler ovenfor – medmindre du har markeret “Ignorer advarsler”.
Alle aritmetiske operationer, sammenligninger eller funktioner, der anvendes på NaN, returnerer NaN:
0/0 <> NAN → NAN
Analyticas repræsentation og behandling af INF og NaN er i overensstemmelse med ANSI-standarder (Association of National Standards Institutes) og IEEE Floating point-standarderne. NaN står for “Not A Number” (ikke et tal), hvilket er en smule misvisende, da NaN i virkeligheden er en slags tal. Du kan registrere NaN i et udtryk ved hjælp af funktionen IsNaN().
Beregninger, der udføres med INF og NaN, følger matematikkens love:
1/INF → 0
1/(-INF) → 0
INF + INF → INF
INF - INF → NAN
Udtryk, der tager NaN som operand eller parameter, giver NaN som resultat, medmindre udtrykket har en veldefineret logisk eller numerisk værdi for enhver værdi af NaN:
True OR NAN → True
NAN AND False → False
IF True THEN 5 ELSE NAN → 5
Null
Null
er et resultat, der er dårligt defineret, hvilket normalt indikerer, at der ikke er noget på den ønskede placering, f.eks. et subscript med en værdi, der ikke passer til en værdi af indekset:
Index I := 1..5
X → Null
Andre operationer og funktioner, der kan returnere Null, omfatter Slice(), Subscript(), Subindex() og MdTable(), f.eks.g.
Index Year :=
Slice(Year, 4) → NULL
Variable X := Array(Year, )
X → NULL
Du kan teste for Null ved hjælp af standardoperatorerne = eller <>, f.eks.:
X = Null → True
eller du kan bruge IsNull(X)
. x=Null
og IsNull(x)
er dog forskellige, når x
kan være et array. x=Null
er en sammenligning på celleplan, hvor hver celle testes for lighed med Null, og hvor resultatet har samme dimensionalitet som x
, mens IsNull(x)
tester, om hele værdien er præcis Null. Når x
er et array, hvor hver celle er lig med Null, er IsNull(x)
falsk.
Når Null optræder i skalaroperationer, giver det som regel en advarsel og evalueres til Null, f.eks.:
10 + Null → Null
Null - 10 → Null
1 AND Null → Null
Array-reducerende funktioner ignorerer Null. Disse eksempler demonstrerer (antag, at A
er indekseret med I
som angivet).
variable A :=
I ▶ | |||||
---|---|---|---|---|---|
1 | 2 | 3 | 4 | 4 | 5 |
8 | Null | 4 | Null | 0 |
Så
Sum(A, I) → 12
Average(A, I) → 4
JoinText(A, I, ', ') → "8, 4, 0"
Graferne vil simpelthen ignorere (ikke vise) ethvert punkt, hvis værdi er Null.
Array-reducerende funktioner omfatter Sum(), Min(), Max(), ArgMin(), ArgMax(), Product(), Average(), JoinText(), Irr(), Npv().
Regression() ignorerer også alle datapunkter, der har Y = Null
, hvilket er nyttigt i forbindelse med manglende data.
Se også
- INF, NAN og Null
- IsNaN
- IsNull
- Tal
- Fejl som følge af nulværdier