Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^4: Behaviour of int() unexpected

by cavac (Prior)
on Mar 13, 2025 at 15:27 UTC ( [id://11164289]=note: print w/replies, xml ) Need Help??


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

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11164289]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (3)
As of 2025-06-21 13:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.