3 ms·
I find it interesting that people don't realize that decimal notation has exactly the same issues as floating point. You can't store 1/10 of a £ in a binary fl
by jbb555 11y ago
I find it interesting that people don't realize that decimal notation has exactly the same issues as floating point.
You can't store 1/10 of a £ in a binary floating point number exactly so don't use it for money.
Well, you can't store 1/3 of a £ in a decimal number exactly either.
The only difference is that people have got so used to decimal that we don't even notice the issue any more, and choose prices and have systems to work around the issue. It's so ingrained we don't even know we are doing it.
So don't think that decimals are any better at storing money amounts than binary floating point, they are not.
however all of the history and workarounds that we've been using for many years before computers for this issue also work if you store them in computers the same way.
That's why you use decimals, it's because they replicate the representation issues we are used to already so we don't even notice they are there, it's not that they are fundementally better in any way.
- roel_v 11y agoI think I disagree (depending on what you mean exactly). You say "That's why you use decimals, it's because they replicate the representation issues we are used to already so we don't even notice they are there, it's not that they are fundamentally better in any way." So decimals are better, because they allow us to represent money amounts in the exact same way we do in real life, which is what we're modeling in software. 1/10 = 0.1, an amount you want to be able to represent in a computer. 1/3 = 0.33..., an amount (when talking about money) you don't want to represent (when we're talking about maintaining balances). Unless you're saying "decimal as a concept is not philosophically or morally better than floating point", which is a position to which I suspect pretty much everybody subscribes.
- emiliobumachar 11y agoI think gp's point is that 0.33... is "an amount (when talking about money) you don't want to represent (when we're talking about maintaining balances)" precisely because you, and everybody else, is so used to decimal that it disappears. There's nothing intrinsic about 1/10 that makes it "rounder" than 1/3, except as an artifact of the numbering system. Aliens with three hands with three fingers each, whose societies got used to base 9, would think 1/3 looks much "rounder", and 1/10 is the one you'd never want to represent.
- roel_v 11y agoNo. It's not that a gum costs 5 cents because it's the only fraction of a dollar that can be represented in cents, it's because pricing is inherently done in one-cent increments. If there was a need to price single items at a lower-than-a-cent cost, or at prices between one-cent increments, and if the need for that outweighed the disadvantages, there would be a way to do it. Other example: an apple doesn't cost 1/3 of a dollar, it costs 33 cents. The need for pricing things as a fraction is simply not there. I doubt most people would see 20 cents as '1/5 of a dollar' in the first place. This might be a difference between people thinking in metric and thinking in imperial, too. (I'm metric, fwiw). (before someone says 'I buy resistors that cost less than a cent', please show me a place that sells them individually)
- fulafel 11y agoDecimal floating point is almost never used though. What's used is decimal fixed point, which is simple to understand and doesn't blow up in bizarre ways when moving up to larger numbers (or mix numbers with different magnitudes).