Kommagetallen en afronding: waarom een klein verschil ontstaat

Begrippen uitgelegd

Een zwevendekommagetal bewaart een getal met een beperkt aantal binaire cijfers en een schaal. Door die schaal kan de komma als het ware verschuiven. Zo kan dezelfde soort waarde kleine breuken en grote hoeveelheden voorstellen. In Pliro schrijf je overigens een punt als decimaalteken.

Denk aan een derde schrijven als 0.333. Die korte versie is handig, maar bevat niet alle cijfers. Computers hebben bij binair rekenen een vergelijkbaar probleem met sommige breuken.

Een verrassende vergelijking

# taal: nl
zeg 0.1 + 0.2
zeg 0.1 + 0.2 == 0.3
zeg 10 + 20 == 30

De uitkomsten zijn 0.30000000000000004, false en true. Pliro toont booleaanse waarden zo, ook wanneer je code de Nederlandse woorden onwaar en waar gebruikt. Pliro gebruikt binary64, het 64-bits zwevendekommaformaat uit IEEE 754. De getallenreferentie beschrijft de regels. De opgeslagen benaderingen van sommige breuken veroorzaken het kleine verschil.

Een eindig getal is een gewoon begrensd getal, geen oneindigheid of ongeldig rekenresultaat. NaN betekent “Not a Number”: geen getal. Sommige systemen gebruiken dit merkteken voor ongeldige berekeningen. Pliro accepteert NaN en oneindigheid niet als geslaagde Number-waarden.

Kies handige eenheden

Bewaar in een winkelspel hele centen: 10 plus 20 geeft 30 cent. Zo vermijd je breukafronding in die kleine berekening. Ook heel grote gehele getallen hebben nauwkeurigheidsgrenzen; dit belooft geen onbeperkt exact rekenen.

Kies bij posities en metingen een passend toegestaan verschil wanneer je benaderde uitkomsten test. Ga er niet van uit dat iedere decimale berekening exact is.

Getallen · Testen