# 👁️🗨️ 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
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
🔬 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.
Vad använder vi för funktioner
Vi får dem ifrån Math