login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > Javascript


Gegevens:
Geschreven door:
gijs
Moeilijkheidsgraad:
Normaal
Hits:
37588
Punten:
Aantal punten:
 (2.67)
Aantal stemmen:
3
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (3)
 

Tutorial:

Getallen in JavaScript

1. Inleiding.
2. Gehele getallen.
3. Gebroken getallen.
4. Octale en hexadecimale stelsel (met dank aan FangorN).
5. Wetenschappelijke notatie.
6. Het probleem van de decimalen in gebroken getallen.
7. Het afronden van gebroken getallen.
8. Einde.


1. Inleiding.
In Javascript valt elk getal in het gegevenstype numerieke waarde. Binnen de numerieke waarde zijne er twee soorten getallen: de gehele getallen (integers) en de gebroken getallen (floating point values).

  top

2. Gehele getallen.
Een geheel getal, een interger, is een getal zonder decimalen, dus zonder cijfers achter de komma. Gewoonlijk gebruik je voor integers het decimale stelsel (het tientallig stelsel).
Daarnaast kun je in Javascript ook het octale (achttallig) en het hexidecimale (zestientallig) stelsel gebruiken. Dat is echter werk voor specialisten.
Zoals elke numerieke waarde kunnen gehele getallen zowel positief als negatief zijn. Door toevoeging van de operator ‘-‘ (het minteken) vóór het getal (of vóór de variabele met een numerieke waarde) wordt die waarde negatief.

 top

3. Gebroken getallen.
Een gebroken getal, een floating point value, heeft één of meerdere cijfers achter de komma.
Zoals elke numerieke waarde kunnen floating point values zowel positief als negatief zijn. Door toevoeging van de operator ‘-‘ (het minteken) vóór het getal (of vóór de variabele met een numerieke waarde) wordt die waarde negatief.

 top
4. Octale en hexadecimale stelsel (met dank aan FangorN)
Normaal werken wij met het decimale (tientallige) stelsel. Getallen bestaan uit cijfers die lopen van 0 t/m 9.
Elk getal kun je schrijven als een som van machten van 10 (ook van andere machten natuurlijk).

Bijvoorbeeld het (decimale) getal 123. Dit is ook te schrijven als:
3 * 10^0 + (3 keer 10 tot de macht 0 plus)
2 * 10^1 + (2 keer 10 tot de macht 1 plus)
1 * 10^2 (1 keer 10 tot de macht 2)

De enige verschillen tussen het decimale (10-tallige) en octale (8-tallige) of hexadecimale (16-tallige) stelsel zijn:

- het grondtal waar je mee rekent
- de cijfers(ymbolen) waar je mee werkt

In het decimale stelsel reken je met grondtal 10 (zie het voorbeeld hierboven) en werk je met 10 cijfers (0 t/m 9).
In het octale stelsel reken je met grondtal 8 en werk je met 8 cijfers (0 t/m 7 - zie voorbeelden hieronder).
In het hexadecimale stelsel reken je met grondtal 16 en werk je met 16 cijfers. Omdat we maar 10 cijfers hebben (0 t/m 9) zijn de letters a t/m f gebruikt om de getallen 10 (voorgesteld door de letter a) t/m 15 (voorgesteld door de letter f) voor te stellen in de hexadecimale notatie (zie voorbeelden hieronder).

Notatie van de verschillende stelsels (in JavaScript)
Om de verschillende stelsels uit elkaar te houden hanteert JavaScript (en ook andere talen) de volgende notatiewijze:
Een octaal getal wordt altijd vooraf gegaan door een 0 (het cijfer 0).
Een hexadecimaal getal wordt altijd vooraf gegaan door 0x (het cijfer 0, gevolgd door een x).

Nu we weten hoe octale en hexadecimale getallen er uitzien, een voorbeeld:

0230

Het getal begint met een 0, dus we rekenen in het octale stelsel. Vaak willen we weten wat de decimale waarde van zo'n getal is, dus we rekenen om - hierbij lezen we het getal weer van rechts naar links, waarbij bij elk cijfer er een "macht van acht" bij komt:

0 * 8^0 + (0 keer 8 tot de macht 0 plus)
3 * 8^1 + (3 keer 8 tot de macht 1 plus)
2 * 8^2 (2 keer 8 tot de macht 2)

Dit is (decimaal) gelijk aan
0*1 + 3*8 + 2*64 = 152

Nog een voorbeeld:

0x1af

Het getal begint met 0x, dus we hebben te doen met een hexadecimaal getal. We rekenen dit getal weer om naar een decimaal getal:

f * 16^0 + (15 keer 16 tot de macht 0 plus)
a * 16^1 + (10 keer 16 tot de macht 1 plus)
1 * 16^2 ( 1 keer 16 tot de macht 2)

Dit is (decimaal) gelijk aan
15*1 + 10*16 + 1*256 = 431

Wanneer je getallen afdrukt met document.write() of toont met window.alert() zullen deze altijd omgezet worden naar de decimale variant.

 top
5. De wetenschappelijke getalnotatie.
Soms kunnen floating point getallen veel cijfers achter de komma hebben. Om het werken met deze slierten decimalen te vergemakkelijken, kun je in Javascript de wetenschappelijke getalnotatie toepassen.
De wetenschappelijke getalnotatie biedt de letter ‘E’ of ‘e’, gevolgd door een negatieve of positieve ‘exponent’ om het aantal cijfers achter de komma te bepalen en samen te vatten. Negatieve exponenten maken het getal kleiner; positieve exponenten maken het getal groter. Bijvoorbeeld: ‘20e-2’ staat voor 0,20 en ‘10e5’staat voor 100.000

 top
6. Het probleem van de decimalen in gebroken getallen.
In Javascript zijn floating point values tot en met 14 cijfers achter de komma nauwkeurig. In het geval van breuken (zoals 1/3) of andere berekeningen met een groot aantal decimalen na de komma, is het vijftiende cijfer achter de komma in Javascript dus altijd een afronding.
Het rare is dus dat in Javascript 1/3 niet exact in cijfers is uit te drukken. Bij rekenkundige operaties kan dit een probleem zijn, bijvoorbeeld wanneer je in een script uitrekent van 2/3 is. Je krijgt dan als uitkomst 0.666666666666667. Dat lijkt heel precies maar toch klopt het niet helemaal. Het aantal zessen is immers oneindig groot. Ook als je met minder cijfers achter de komma werkt in je script, kun je onverwachte resultaten krijgen.

Voorbeeld:
getal1 = (4/3) * 0.222
getal2 = 3 * getal1 / 0.222

Als je dit exact zou uitrekenen krijgt getal2 als resultaat precies 4. Maar als je dit uitvoert in Javascript heeft getal2 een waarde van 3.999999999999996. Dat is wel bijna 4, maar niet precies. Als in je script ergens wordt gezocht naar de waarde 4, dan is die onvindbaar.

 top


7. Het afronden van gebroken getallen.
In Javascript is het mogelijk gebroken getallen geforceerd af te breken tot een door jou gewenst aantal cijfers achter de komma.. Dit is vooral van belang wanneer je uitkomsten van breuken of berekeningen wilt tonen, bijvoorbeeld als je waarden in munteenheden berekent en dus in twee decimalen wilt.
Voor het afronden van getallen in Javascript moet je altijd zelf een programma schrijven. Hiervoor gebruik je het object Math en de methode round(). Het goed afronden en tonen van resultaat in de gewenste schrijfwijze gaat echter niet vanzelf, en vergt zeker bij ingewikkelde berekeningen nauwkeurige scripts.

Wil je afronden op één cijfer achter de komma, vermenigvuldig dan het getal vóór de afronding met 10 en deel na de afronding weer door 10.
Wil je afronden op twee cijfers achter de komma, vermenigvuldig dan vóór de afronding met 100 en deel na de afronding weer door 100.
Wil je afronden op drie cijfers achter de komma, vermenigvuldig dan het getal vóór de afronding met 1000… enz....

Voorbeeld:
getal = 5.67891234

Dit getal gaan we afronden op 1 decimaal. Hier zijn twee verschillende schrijfwijzen voor.

1. getal = Math.round(getal * 10) / 10
2. getal = 5.67891234 * 10
    getal = Math.round(getal) / 10

Deze twee manieren doen precies hetzelfde, alleen is de eerste manier wat korter typwerk.

 top


8. Einde.
De info van deze tutorial is ook terug te vinden in: Basishandleiding javacript, geschreven door Gerard Staal. Dat boek is zeer aan te raden als je met javascript begint.
Zo, dit was dan de tutorial. Hopelijk heb je er iets van geleerd. Vragen of opmerkingen kan je posten bij de nota’s of je kan me een pm sturen.

 top


« Vorige tutorial : Afbeeldingen Volgende tutorial : Arrays - Tabellen »

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.02s