in reply to Re^3: Behaviour of int() unexpected
in thread Behaviour of int() unexpected

Number crunching in decimal is a waste of digital resources.

Most of the time, yes. But there are certainly use cases, especially when using BCD (binary-coded decimal). When using very slow hardware, the tradeoff between using BCD and converting to/from binary can be significant, think battery powered digital watch.

It's also quite useful when dealing with financial data and other "human math problems" (pocket calculators, etc). Yes, you still get rounding errors and stuff, but they are the rounding errors that humans expect in the decimal system we are used to (like on 10/3), not the ones binary calculation generate.

Even the x86 architecture has (had?) very basic BCD support

PerlMonks XP is useless? Not anymore: XPD - Do more with your PerlMonks XP
Also check out my sisters artwork and my weekly webcomics

Replies are listed 'Best First'.
Re^5: Behaviour of int() unexpected
by LanX (Saint) on Mar 13, 2025 at 20:25 UTC
    > It's also quite useful when dealing with financial data

    Financial data, like banks, tax authorities, etc have fixed rules about precision and rounding to avoid ambiguity. And these date back to integer times.

    You can just calculate in integer if you use cents or the required fractions of them and respect the rounding rules.

    IOW instead of calculating with a float 5,02€ you calculate with 502¢ or 5020 deci-cents.

    You only need to "shift" the point once you're putting out the result (best string wise)

    I haven't seen a case yet where this didn't work.

    Cheers Rolf
    (addicted to the Perl Programming Language :)
    see Wikisyntax for the Monastery

      I fully agree, that's how my own software does it. Let me re-formulate my answer: Quite a few prominent early computer systems (like the IBM/360 and the VAX) had support for BCD math. Since those were designed by quite smart engineers, i assumed that this had some advantages.

      BTW, the 6502 processor also has a decimal mode. I've watched a video by Ben Eater where he explains how to convert a binary number into a decimal for displaying it, and it is quite an intense process. For things like displaying a game score, it might work out that using decimal/BCD mode for the score could save some CPU cycles. But i'm in no way an expert on this.

      PerlMonks XP is useless? Not anymore: XPD - Do more with your PerlMonks XP
      Also check out my sisters artwork and my weekly webcomics