Computerarithmetiek
In veel programmeertalen is de vergelijking 0.1 + 0.2 == 0.3 bij dubbele precisie onwaar. Wat is hiervoor de juiste reden?
- ADe optelinstructie kan decimale getallen soms niet correct optellen
- B0,3 is een bijzondere waarde die niet als drijvendekommagetal kan worden weergegeven, zodat de vergelijking altijd onwaar is
- CAlle drie worden door afgeronde, nabije waarden weergegeven en verschillen door fouten licht van waarde
Antwoord en toelichting tonen
Antwoord: C. Alle drie worden door afgeronde, nabije waarden weergegeven en verschillen door fouten licht van waarde
0,1, 0,2 en 0,3 kunnen alle drie niet exact binair worden weergegeven en worden afgerond op de dichtstbijzijnde waarde. De som van de benaderingen van 0,1 en 0,2, afgerond, is 0.30000000000000004 en komt in het laatste cijfer niet overeen met de benadering van 0,3, 0.29999999999999998… Daarom worden drijvendekommagetallen gewoonlijk vergeleken door te toetsen of het absolute verschil kleiner is dan of gelijk is aan een kleine tolerantie. De optelinstructie rondt volgens de norm correct af en ook 0,3 is als benadering weer te geven.