Hacker News new | ask | show | jobs
by Kalium 1112 days ago
I've certainly benefited from knowing about floating point error. I likely would have spent a lot of time confused about why certain kinds of math kept coming out wrong without know about the underlying representation of floats, how it results in error, why this tradeoff is good for most scenarios, and other options.

The problem is that this is the sort of foundational knowledge that isn't easily gained through the learn-as-needed approach that applies to higher level things. Most people can notice when they don't know how to use a library. It's probably not obvious to most people who don't already know about it that their computer can handle numbers wrong.

1 comments

> It's probably not obvious to most people who don't already know about it that their computer can handle numbers wrong.

0.1+0.2=0.30000000000004 is not obvious? When a floating point error happens, it’s quite plainly obvious. At that point, someone would look up a SO article like https://stackoverflow.com/questions/588004/is-floating-point... and learn about it. And from there, FPE mitigations.

Would you get to the mitigations faster if you knew binary? Sure, the first time you ever hit it. But that seems to be bottom of the barrel optimization, IMO.

Most manifestations will be in the middle of something more nuanced than a demo statement, the people in question will often lack the vocabulary to describe what they're seeing, and it's rarely anyone's first or even fifth thought that addition is going wonky. With that in mind, I think it's perhaps a stretch to call floating point error plainly obvious.

You're right, of course. This would be only marginally faster if the person knew binary. That said, there's a large swath of very similar things that crop up where the person benefits from a familiarity with the fundamentals of computing. There's enough of these things that a reasonable person might conclude that a software engineer benefits from such a knowledge base inside their head. That way a person can benefit from all those marginal gains at once.

The example is overly simplified, sure. But even if it’s in the middle of a swath of other operations, it will still result in very similar behavior. You’re likely never to get a clean number once a floating point error happens, and the result will be slightly off and seem to not be rounded.

Searching “why is my arithmetic operation not rounded”, I got https://docs.python.org/3/tutorial/floatingpoint.html as the third answer. I obviously can’t unlearn what floating point arithmetic is, but it feels like someone without any knowledge of it would likely be able to get a similar result relatively quickly as long as they are good at searching for answers (a much more important skill, IMO, which should be considered foundational)

> That said, there's a large swath of very similar things that crop up where the person benefits from a familiarity with the fundamentals of computing.

We’re talking specifically about binary, not fundamentals in general. Some fundamental knowledge is more important than others, and I posit that binary is on the lower end of that spectrum.

IMO, being good at searching is a skill that's only really useful when you have some idea what kind of question you're looking for an answer to.

I don't think we're actually talking specifically about binary. I am treating the reference to binary as a stand-in for the mathematical fundamentals of computing, rather than a narrow comment on understanding binary and bitwise operations.

> IMO, being good at searching is a skill that's only really useful when you have some idea what kind of question you're looking for an answer to.

"why is my arithmetic operation not rounded" seems like something anyone facing the problem would ask. That's pretty much the root issue in words.

> I don't think we're actually talking specifically about binary.

I mean, that is literally what the thread you replied to was discussing.

The comment I replied to explicitly talks about binary and their use of it, the comment they replied to originally also specifically calls out the OP’s quote which talks directly about binary. You can choose to deviate from that if you want to make a point, but the thread has always explicitly been about binary and that is what we should actually be discussing.

> the OP’s quote which talks directly about binary

The OP's quote is "fundamentals of computing, like binary..." It seems reasonable for a person to think the discussion is about "fundamentals of computing" more generally than the specific example given of "binary". More precisely, the fact that a thread caught on to one specific aspect of the discussion doesn't mean that a commenter can't keep in mind the greater context.