this post was submitted on 25 Jun 2023
10 points (100.0% liked)

Programmer Humor

19594 readers
785 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] alp@sh.itjust.works 2 points 1 year ago (2 children)

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.

[–] nous@programming.dev 1 points 1 year ago

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).

[–] Dazawassa@programming.dev 1 points 1 year ago (2 children)

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.

[–] Knusper@feddit.de 0 points 1 year ago (1 children)

Yeah, this works especially well for currencies (effectively doing all calculations in cents/pennies), as you do need perfect precision throughout the calculations, but the final results gets rounded to two-digit-precision anyways.

[–] Hotzilla@sopuli.xyz -1 points 1 year ago

quite a horrible hack, most modern languages have decimal type that handles floating rounding. And if not, you should just use rounding functions to two digits with currency.