Мне нужно вычислить некоторые переменные с плавающей запятой, и мой коллега предлагает мне использовать BigDecimal
вместо double
так как это будет точнее. Но я хочу знать, что это такое и как максимально использовать BigDecimal
?
BigDecimal
- это точный способ представления чисел. A Double
имеет определенную точность. Работа с двойниками различных величин (скажем, d1 = 1000,0
и d2 = 0,001
) может привести к тому, что 0,001
будут полностью отброшены при суммировании, поскольку разница в величине равна такой большой. С BigDecimal
этого не произойдет.
Недостатком BigDecimal
является то, что он медленнее и немного сложнее программировать алгоритмы таким образом (из-за +
-
*
и ] /
не перегружается).
Если вы имеете дело с деньгами или точность является обязательной, используйте BigDecimal
. В противном случае Двойные
, как правило, будут достаточно хорошими.
Я рекомендую прочитать javadoc из BigDecimal
, поскольку они действительно объясняют вещи лучше, чем я здесь :)