fixed point arithmetics in java with fast performance

前端 未结 4 1819
盖世英雄少女心
盖世英雄少女心 2020-12-17 01:42

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

4条回答
  •  隐瞒了意图╮
    2020-12-17 02:18

    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.

提交回复
热议问题