The lesson here is that floating point numbers are not exact and that you should never do a straight comparison with them. Instead check to see if they are within some small tolerance of each other. In python that is done with math.isclose(0.1 + 0.2, 0.3).
Please don’t try to approximate. Use the decimal module to represent numbers and everything will work as expected and it has a ton of other features you didn’t know you needed.
Decimal does come at a cost though, being slower than raw floats. When you don’t need precision but do need performance then it is still valid to use floats. And quite often you don’t need absolute precision for things.
The lesson here is that floating point numbers are not exact and that you should never do a straight comparison with them. Instead check to see if they are within some small tolerance of each other. In python that is done with
math.isclose(0.1 + 0.2, 0.3)
.Please don’t try to approximate. Use the decimal module to represent numbers and everything will work as expected and it has a ton of other features you didn’t know you needed.
https://docs.python.org/3/library/decimal.html#module-decimal
Decimal does come at a cost though, being slower than raw floats. When you don’t need precision but do need performance then it is still valid to use floats. And quite often you don’t need absolute precision for things.