I need to represent some numbers in Java with perfect precision and fixed number of decimal points after decimal point; after that decimal point, I don\'t care. (More concre
Are you completely sure BigDecimal is the performance problem? Did you use a profiler to find out? If yes, two options that could help are:
1) Use long
and multiply all values by a factor (for example 100 if you are interested in cents).
2) Use a specially designed class that implements something similar to BigDecimal
, but using long
internally. I don't know if a good open source library exists (maybe the Java Math Fixed Point Library?). I wrote one such class myself quite a long time ago (2001 I believe) for J2ME. It's a bit tricky to get right. Please note BigDecimal
uses a long
internally as well except if high precision is needed, so this solution will only help a tiny bit in most cases.
Using double
isn't a good option in many cases, because of rounding and precision problems.