in reply to
How to calculate the sum of columns to be equal to 100?
In any programming language (much to the vexation of accountants ... who, I cordially submit, get whatever they deserve), dollars-and-cents when treated as floating-point numbers will not always add-up “to the penny.” In fact they can be off by several cents, depending on exactly how the information was processed.
One floating-point technique that is sometimes used is called banker’s rounding,” which rounds even-ending numbers one way, odd-ending numbers the other. (I don’t rightly recall if Perl implements it.) Another technique, used in (for instance) Microsoft Access for its CURRENCY data-type, is to use scaled integers. Internally, the number is multiplied by 10000 to give a fixed four digits of precision. But, even then, it might not add-up perfectly. It’s the math. Accountants, you see, inadvertantly “lose the money ahead of time” by rounding to (say) two decimal-places first. Their desk-calculators have a special mode to do that, which will produce different answers if instead set to ordinary floating-point mode. (Politically-connected accountants have a different mode yet, which allows the answer to be “anything you want!”) ;-)
Reproduce a similar issue in your accountant’s precious Microsoft Excel Spreadsheet, which you certainly can, and (s)he’ll be quiet(er).
ac - count - ant (n):
A person who will cheerfully spend a dollar looking for a penny, then bill you for it.
au - dit -or (n):
A highly-paid professional who will certify that both answers are equally wrong.