Сравнение BigDecimal и int в Java - PullRequest
9 голосов
/ 18 марта 2012

Какой лучший способ сравнения BigDecimal и int в Java: покрытие BigDecimal в int или преобразование int в BigDecimal?

Ответы [ 4 ]

10 голосов
/ 18 марта 2012

Если вы ожидаете, что значение BigDecimal будет действительно большим (т.е. вне диапазона значений int, который составляет от -2 31 до 2 31 -1), и / или для того, чтобы содержать десятичные цифры, или просто для безопасного воспроизведения, вам нужно преобразовать int в BigDecimal, чтобы избежать ошибок переполнения / усечения.

В противном случае, если производительность является действительно большой проблемой (что встречается редко), она может быть лучше с другой стороны.

2 голосов
/ 18 марта 2012

Вы хотите преобразовать int в BigDecimal.

Это потому, что вы не всегда сможете преобразовать BigDecimal в int; Вы потеряете любую информацию после десятичной запятой, и значение BigDecimal может быть вне диапазона целого числа.

1 голос
/ 18 марта 2012

Поскольку BigDecimal расширяет диапазон int, вам придется преобразовать int в BigDecimal, чтобы убедиться, что их можно сравнить, во всяком случае.

0 голосов
/ 18 марта 2012

Одной из причин не преобразовывать int в BigDecimal является тот факт, что вы создаете новый объект, поэтому вы действительно выбрасываете мусор в кучу для достижения равенства. Кроме того, примитивное равенство будет быстрее, чем у реального объекта BigInteger.

...