Instruktioner

  • p - Presentation
  • f - Helskärms presentation

Tal i javascript

# 👁️‍🗨️ Om hur js hanterar tal

Till skilnnad ifrån många andra språk finns det bara en typ för tal i js, men tal kan ändå ställa till många problem.

  • Många av exemplerna på hur dåligt js är kommer ifrån konstiga tal konverteringar.
  • Tal kan ge upphov till egendomliga avrundningsfel och detta är inbyggd i js.
  • Vi försöker här undersöka vad tal är och ovanstånde problem.

❓ Om hur js hanterar tal

Till skilnnad ifrån många andra språk finns det bara en typ för tal i js, men tal kan ändå ställa till många problem.

  • Många av exemplerna på hur dåligt js är kommer ifrån konstiga tal konverteringar.
  • Tal kan ge upphov till egendomliga avrundningsfel och detta är inbyggd i js.
  • Vi försöker här undersöka vad tal är och ovanstånde problem.

Vad är Number?

Number är datypen för tal i javascript.

  • Number är ett flyttal("float point numbers").
  • Det betyder förenklat att Number är ett decimaltal.
  • Består av 64 bits

📣 Några kommentar om Numbers

Number beter sig oftast "snällt", men det finns tillfällen då datorns implementering av Number har betydelse.

  • Representerar heltal upp till 15 siffror korrekt.
  • 9999999999999998+1
  • Avrundning fel för decimaltal kan förekomma. 0.2+0.1

Obs! Dessa problem är inget unikt för js utan finns i alla språk när du använder dig av flyttal.

Vad använder vi då Number till?

Efter som det inte finns någon anna tal typ av nder vi det till allt.

  • Beräkningar, även krävande.
  • Men vi kan försöka att använda bara heltal för att undvika problem.
  • Hålla ordning på saker, nummera olika ting.

🀄️ Hur ser det ut i andra språk?

I många nadra språk så som C, C00, C#, java med flera skiljer man på olika typer av tal.

  • Det finns double eller float för flytal.
  • Och int med flera för heltal.
  • Antalet byte kan skilja mellan olika typer av tal.
  • Att optimera minnes användingen kan vara en viktig del.

Vad är NaN?

NaN är ett speciall siffra som används i js för att säga att detta är inget tal.

  • NaN är förkortning av "Not a Number"
  • typeof NaN === "number"
  • Number("abc") === NaN
  • NaN
  • NaN\NaN+3

Vad är Infinity?

Infinity är ett speciall siffra som används i js för att säga att detta är resultatet av en odefinerad beräkning. Infinit kan ha posetivt eller negativt tecken.

  • typeof Infinity === "numbers"
  • 1/0
  • 5/(5-5)
  • Infinity+Infinity InfinityInfinity
  • OBS! Infinity-Infinity===NaN

🔄 Att konvertera till ett Number.

För att konvertera till ett Number använder vi funktionen Number().

  • Number(5) Tips: Du kan nu använda de inbyggda funktionerna för Number.
  • Number("5") - Number("3.14") - Number("555.555")
  • Number("-5")
  • Dessa är NaN: Number("5/5") Number("One")

🔄 Konvertera mera

Det finns några egendomliga som uppkommer pga. ovanliga Number konverteringar.

  • Number({}) === NaN
  • Number() === 0
  • Number(true) === 1
  • Number(false) === 0

Konverteringen av booleans är logisk eftersom det är de värden som true och false har i matematiken.

🔬 Hur vet vi om något är ett nummer?

Det finns flera sätt att göra detta på.

  • isNaN är sant om parameter inte är ett tal. Används tillsammans med inte operatorn "!".
  • !isNaN(5) isNaN("Hello")
  • isFinite är sant om parametern är ett tal och inte är "Infinity".
  • isFinite(5) isFinite(Infinity)
  • isInterger sant om parametern är ett heltal.
  • isInteger(5) isInteger(3.14)

👿 Förvånande avrundningar

Avrundningar kan ställa till problem.

  • 0.1+0.2

Vad använder vi för funktioner

Vi får dem ifrån Math