Verwijderd schreef op donderdag 31 maart 2005 @ 12:59:
Als ik de volgende code gebruik in javascript
code:
1
2
| totaal = 0.6 + 0.6 + 0.6;
alert("totaal: " + totaal); |
Dan krijg ik dit als uitkomst.
totaal = 1.799999999999998
Waarom krijg ik niet 1.8 als antwoord?
Kan iemand mij helpen?
Elke decimaal getal wordt omgezet tot een binair getal, lees: alles dat je met cijfers van machten van tien kan beschrijven wordt omgezet tot een macht van 2. Probeer 10 eens met machten van 2 te benaderen. Als je wortel van 10 uitrekent dat krijg je een leuk kommagetal, maar men kan deze kommagetal nooit exact bereiken. 2^(2+1) = 8 ; 2^(2+1+1/4) = 9,51... ; 2^(2+1+1/4+1/16) = 9,935... ; 2^(2+1+1/4+1/16+1/128) = 9,9888... enz probeert men te benaderen.
Met deze benaderingsfouten verderrekenen en blijven rekenen heeft ervoor gezocht dat de Amerikaanse Patriot-luchtafweer ernaast hebben geschoten tijdens de Golfoorlog, met doden als gevolg.
nieuws: Onderzoekers Sun vinden computers slecht rekenen De oplossing voor die luchtafweer is eenvoudig, gewoon regelmatig de reset-knop induwen en het rekent weer met een schone lei.
[
Voor 10% gewijzigd door
rapture op 31-03-2005 13:56
]