Сравнение BigDecimal и int в Java

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

4 ответов


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

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


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

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


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


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