17
Fixed (programming.dev)
top 10 comments
sorted by: hot top controversial new old
[-] DarkDarkHouse@lemmy.sdf.org 5 points 2 years ago
[-] AI_toothbrush@lemmy.zip 4 points 2 years ago

People when they learn doubles and rounding exists

[-] alp@sh.itjust.works 3 points 2 years ago

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 1 points 2 years ago

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 2 years ago

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 -2 points 2 years 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.

[-] em7@programming.dev 1 points 2 years ago* (last edited 2 years ago)

Not sure what financing applications you develop. But what you suggest wouldn't pass a code review in any financial-related project I saw.

Using integers for currency-related calculations and formatting the output is no dirty hack, it's industry standard because floating-point arithmetic is, on contemporary hardware, never precise (can't be, see https://en.wikipedia.org/wiki/IEEE_754 ) whereas integer arithmetic (or integers used to represent fixed-point arithmetic) always has the same level of precision across all the range it can represent. You typically don't want to round the numbers you work with, you need to round the result ;-) .

[-] nous@programming.dev 1 points 2 years 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).

[-] lemmyvore@feddit.nl 1 points 2 years ago* (last edited 2 years ago)

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

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

Programmer Humor

19821 readers
535 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 2 years ago
MODERATORS