Accumulation of floating point precision errors is so common, we have an entire page about why unit tests need to account for it.
Comment on IEEE 754
cyborganism@lemmy.ca 2 weeks ago
LOL! Man I learned that in college and never used it ever again. I never came across any scenarios in my professional career as a software engineer where knowing this was useful at all outside of our labs/homework.
Anyone got any example where this knowledge became useful?
socsa@piefed.social 2 weeks ago
okwhateverdude@lemmy.world 2 weeks ago
How long has this career been? What languages? And in what industries? Knowing how floats are represented at the bit level is important for all sorts of things including serialization and math (that isn’t accounting).
leisesprecher@feddit.org 2 weeks ago
More than a surface level understanding is not necessary. The level of detail in the meme is sufficient for 99,9% of jobs.
No, that’s not all just accounting, it’s pretty much everyone who isn’t working on very low level libraries.
What in turn is important for all sorts of things is knowing how irrelevant most things are for most cases. Bit level is not important, if you’re operating 20 layers above it, just as business logic details are not important if you’re optimizing a general math library.
cyborganism@lemmy.ca 2 weeks ago
Since 2008.
I’ve worked as a build engineer, application developer, web developer, product support, DevOps, etc.
I only ever had to worry about the limits, but never how it works in the background.
scratchee@feddit.uk 2 weeks ago
In game dev it’s pretty common. Lots of stuff is built on floating point and balancing quality and performance, so we can’t just switch to double when things start getting janky as we can’t afford the cost, so instead we actually have to think and work out the limits of 32 bit floats.
cyborganism@lemmy.ca 2 weeks ago
So you have to remember how it’s represented in the system with how the bits are used? Or you just have to remember some general rules that “if you do that, it’ll fuck up.”
scratchee@feddit.uk 2 weeks ago
Well, rules like “all integers can be represented up to 2^24” and “10^-38 is where denormalisation happens” are helpful, but I often have to figure out why I got a dodgy value from first principles, floating point is too complicated to solve every problem with 3 general rules.
I wrote a float from string function once which obviously requires the details (intentionally low quality and limited but faster variant since the standard version was way too slow).
mp3@lemmy.ca 2 weeks ago
h14s.p5r.org/2012/09/0x5f3759df.html comes to mind
bleistift2@sopuli.xyz 2 weeks ago
To not be surprised when
0.1 + 0.1 != 0.2
stsquad@lemmy.ml 2 weeks ago
Writing floating point emulation code?
I’d pretty much avoided learning about floating point until we decided to refactor the softfloat code in QEMU to support additional formats.
cyborganism@lemmy.ca 2 weeks ago
The very wide majority of IT professionals don’t work on emulation or even system kernels. Most of us are doing simple applications, or working on supporting these applications, or their deployment and maintenance.
zqwzzle@lemmy.ca 2 weeks ago
If you’re doing any work with accounting, or writing test cases with floating point values.
tdawg@lemmy.world 2 weeks ago
Please tell me you aren’t using floating points with money
wewbull@feddit.uk 2 weeks ago
Knowing not to use floating point with money is good use of that knowledge.
psivchaz@reddthat.com 2 weeks ago
You’d be dismayed to find out how often I’ve seen people do that.
zqwzzle@lemmy.ca 2 weeks ago
Yeah I shudder when I see floats and currency.
Womble@lemmy.world 2 weeks ago
Eh, if you use doubles and you add 0.000314 (just over 0.03 cents) to ten billion dollars you have an error of 1/1000 of a cent, and thats a deliberately perverse transaction. Its not ideal but its not the waiting disaster that using single precision is.
SubArcticTundra@lemmy.ml 2 weeks ago
That sounds like an accident waiting to happen
Saleh@feddit.org 2 weeks ago
How do you do money? Especially with stuff like some prices having three or four decimals
jmcs@discuss.tchncs.de 2 weeks ago
Instead of representing $1.102 as
1.102
your store it as1012
(or whatever precision you need) and divide by 1000 only for displaying it.cyborganism@lemmy.ca 2 weeks ago
No. I don’t have to remember that.
I just have to remember the limits and how you can break the system. You don’t have to think about the representation.