this post was submitted on 02 Jan 2025
809 points (99.1% liked)

Programmer Humor

32710 readers
152 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 5 years ago
MODERATORS
 

~~Stolen~~ Cross-posted from here: https://fosstodon.org/@foo/113731569632505985

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 22 points 4 days ago (1 children)

Because at the end of the day everything gets simplified to a 1 or a 0. You could store a fraction as an “object” but at some point it needs to be turned into a number to work with. That’s where floating points come into play.

[–] Knock_Knock_Lemmy_In 13 points 4 days ago (1 children)

There is already a pair of objects we can use to store fractions. The ratio of two integers.

Irrational numbers is when floating points come into play.

[–] [email protected] 8 points 4 days ago* (last edited 11 hours ago) (1 children)

Which they tend to do a lot. Like, the moment a square root or trig function shows up.

Even without it's pretty easy to overflow a fraction stored the way you're describing. x=1/(x*x+1) does it in log time. There's really not a lot of situations where exact fractions work, but purely symbolic logic wouldn't. Maybe none, IDK.

Edit: I mean, I guess it's all symbolic. What I'm trying to say is that if you're at a level of detail where you can keep track of the size of denominators, native support for a type that hides them is counterproductive. It's better to lay out your program in such a way that you just use small integers, which is guaranteed to be possible in that case.

[–] [email protected] 4 points 4 days ago (1 children)

There’s really not a lot of situations where exact fractions work, but purely symbolic logic wouldn’t. Maybe none, IDK.

Simulations maybe? Like the ones for chaotic systems where even the slightest inaccuracy massively throws the result off, where the tiny difference between an exact fraction and a float can seriously impact the accuracy as small errors build up over time.

[–] [email protected] 2 points 3 days ago

Are you aware of one that takes place completely within fractions of a few select types? Usually they're continuous.

I can think of some that are all integers, but I covered that in the edit.