3 ms·
That's faster, but I think can be a poor trade-off because: 1. The speed gain is negligible for most programs 2. The addition of any pricing that requires fra
by fdr 14y ago
That's faster, but I think can be a poor trade-off because:
1. The speed gain is negligible for most programs
2. The addition of any pricing that requires fractional cents will require careful work to handle unit conversion to maintain integral representation.
#2 becomes ugly when one has an API many people use, and one must bother them to update their code paths to use the new, higher precision that can handle all money as integers. This is not even counting the case where one tries to cut a corner and someone ends up not doing the conversion they ought to.
Also, programs often are more lucid when operating in terms of the frequent units of choice, such as dollars or fractional dollars. Few domains price everything in cents by preference, because in aggregation often dollars -- sometimes many -- are exchanged. The problem gets worse if one needs weird units like 0.1c to regain integral numbers.
There are ways around these, but falling back on strings seems to me the lowest-maintenance option.
On the other hand, integral representations have few dependencies (a compliant javascript interpreter), which is also a pretty big plus for that.
- ricardobeat 14y agoWork in 1/100ths of cents? You will have to convert those strings to numbers at some point (or use a specialised library format).
- fdr 14y agoThe latter. Such as big.js (not an endorsement, my understanding is too weak for that). Just about every practically used programming environment from every walk of life has such a thing in the standard library, and I suppose they are there for good reasons. However, the fact is that Javascript doesn't have one, so one will have to weigh dependencies into their decision. Go - math/big Java - BigDecimal Python - decimal Ruby - BigDecimal PostgreSQL - numeric Interesting mention: decimal in C#, deemed sufficient for monetary calculations at 128 bits of precision. Another interesting mention: Oracle, which in my understanding handles just about all its numbers this way, by default. This might tell you something about their early customer base.
- wukix 14y agoLisp - rationals http://wukix.com/lisp-decimals http://wukix.com/lisp-decimals
- dietrichepp 14y agoCS history lesson -- don't use rationals for money. You have no business messing with the denominator, so the extra freedom of using arbitrary rationals is just more rope to hang yourself with.
- dllthomas 14y agoIncidentally, 1/100th of a cent is a "milray", defined in A Connecticut Yankee In King Arthur's Court.