Двойной против BigDecimal?

Мне нужно вычислить некоторые переменные с плавающей запятой, и мой коллега предлагает мне использовать BigDecimal вместо double так как это будет точнее. Но я хочу знать, что это такое и как максимально использовать BigDecimal ?

272
задан bluish 6 January 2014 в 22:14
поделиться

1 ответ

BigDecimal - это точный способ представления чисел. A Double имеет определенную точность. Работа с двойниками различных величин (скажем, d1 = 1000,0 и d2 = 0,001 ) может привести к тому, что 0,001 будут полностью отброшены при суммировании, поскольку разница в величине равна такой большой. С BigDecimal этого не произойдет.

Недостатком BigDecimal является то, что он медленнее и немного сложнее программировать алгоритмы таким образом (из-за + - * и ] / не перегружается).

Если вы имеете дело с деньгами или точность является обязательной, используйте BigDecimal . В противном случае Двойные , как правило, будут достаточно хорошими.

Я рекомендую прочитать javadoc из BigDecimal , поскольку они действительно объясняют вещи лучше, чем я здесь :)

407
ответ дан 23 November 2019 в 02:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: