Skip to content
Harry Broeders edited this page Feb 24, 2023 · 1 revision

0.1 + 0.2 = 0.30000000000000004?

Als je in een Python programma floating point getallen gebruikt, dan is het resultaat soms anders dan je zou denken.

0.1 + 0.2 = 0.30000000000000004

Tienden kun je in het tientallig stelsel exact weergeven, maar in het binair stelsel niet. Getallen worden in een computer binair (als machten van twee) opgeslagen. B.v. het getal 0.5 is binair 0.1 en het getal 0.25 is binair 0.01. Als je het decimale getal 0.1 omzet naar binair vind je:

0.0001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011001100110011... enz.

Dat moet dus afgerond worden om in de computer op te kunnen slaan. Als je dan gaat rekenen met zo'n afgerond getal, dan is het resultaat niet meer exact correct.

Met de Python-functie round kun je een getal afronden op een bepaald aantal decimalen.

>>> round(0.1 + 0.2, 1)

Geeft als resultaat:

0.3

Een uitgebreidere uitleg vind je hier: https://jvns.ca/blog/2023/02/08/why-does-0-1-plus-0-2-equal-0-30000000000000004/

Meer info over het werken met floating point getallen in Python vind je hier: https://docs.python.org/3/tutorial/floatingpoint.html.

Clone this wiki locally