I know this is a humor subreddit and this is a joke, but this problem wasted a huge week of mine since I was dealing with absurdly small numbers in my simulations. Use fsum from math library in Python to solve this people.
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.
I know this is a humor subreddit and this is a joke, but this problem wasted a huge week of mine since I was dealing with absurdly small numbers in my simulations. Use fsum from math library in Python to solve this people.
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
One of my lecturers mentioned a way they would get around this was to store all values as ints and then append a . two character before the final one.