Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

This approach doesn't work when dealing with fractional cents, like charging $0.0001 per hour for something.

I would rather recommend using an arbitrary precision decimal library like Decimal.js, and using strings to represent money in JSON. And of course using an appropriate database type for storing the data.



Take the inverse and use fractional hours per penny.

Edit: And sum your (optionally price-weighted) time first.


Just make the smallest possible fractional cent the unit then


That works if you are 100% sure you know beforehand what the smallest possible fraction will be.

What you gain by consistently using an arbitrary precision decimal library to process all monetary values, is the freedom to process smaller fractions later if necessary. Also you'll never overflow with really big values.

In other words, when you represent monetary values with arbitrary precision Decimal objects everywhere, you can easily expand your application as much as you want on either side of the decimal dot. Changing existing integer-based code do to that is very error-prone, you quickly lose sight of what exactly an integer value or parameter means in different places.


What if you can't know that beforehand? E.g. if you suddenly need to charge $0.000000001 per second.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: