• 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.

X, där index I inte har värdet '?'

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

Tal och textINF, NAN och NULL – UndantagsvärdenVarningar

Articles

Lämna ett svar

Din e-postadress kommer inte publiceras.