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

Programmer Humor

19471 readers
1225 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 0 points 1 year ago (1 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.

[–] Dazawassa@programming.dev 0 points 1 year ago (1 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 0 points 1 year ago (1 children)

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.

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

Had to think about it, but yeah, I guess, you can't do division or non-integer multiplication with integer cents, as standard integer math always rounds downwards and it forces you to round after every step.
You could convert to a float for the division/multiplication and you do get more efficient addition/subtraction as well as simpler de-/serialization, but in most situations, it's probably less trouble to use decimals.