Подтвердить что ты не робот

Как использовать операторы сравнения, такие как>, =, <на BigDecimal

У меня есть класс домена с unitPrice, заданный как тип данных BigDecimal. Теперь я пытаюсь создать метод сравнения цены, но похоже, что у меня нет операторов сравнения в типе данных BigDecimal. Нужно ли мне менять тип данных или есть другой способ?

4b9b3361

Ответ 1

Каждый объект класса BigDecimal имеет метод compareTo, который вы можете использовать для сравнения с другим BigDecimal. Результат compareTo затем сравнивается > 0, == 0 или < 0 в зависимости от того, что вам нужно. Прочтите документацию, и вы узнаете.

Операторы ==, <, > и т.д. могут использоваться только для примитивных типов данных, таких как int, long, double или их классы-оболочки, такие как Integer и double.

Из документации compareTo:

Сравнивает этот BigDecimal с указанным BigDecimal.

Два BigDecimalобъекты, которые равны по стоимости, но имеют разный масштаб (например, 2.0 и 2.00) считаются равными этим методом. Этот метод предоставляется в отличие от индивидуальных методов для каждого из шести булевых операторы сравнения (<, ==, > , > =,! =, < =). Предлагаемая идиома для выполнение этих сравнений: (x.compareTo(y) <op> 0), где <op>является одним из шести операторов сравнения.

Возвращает: -1, 0 или 1, поскольку этот BigDecimal численно меньше, равен или больше val.

Ответ 2

Используйте метод compareTo BigDecimal:

public int compareTo (BigDecimal val) Сравнивает этот BigDecimal с указанный BigDecimal.

Returns:
-1, 0, or 1 as this BigDecimal is numerically less than, equal to, or greater than val.

Ответ 3

BigDecimal не является примитивным, поэтому вы не можете использовать операторы <, >. Однако, поскольку это Comparable, вы можете использовать compareTo(BigDecimal) с тем же эффектом. Например:.

public class Domain {
    private BigDecimal unitPrice;

    public boolean isCheaperThan(BigDecimal other) {
        return unitPirce.compareTo(other.unitPrice) < 0;
    }

    // etc...
}

Ответ 4

Короче:

firstBigDecimal.compareTo(secondBigDecimal) < 0 // "<"
firstBigDecimal.compareTo(secondBigDecimal) > 0 // ">"    
firstBigDecimal.compareTo(secondBigDecimal) == 0 // "=="    

Ответ 5

Вы можете использовать метод с именем compareTo, x.compareTo(y). Он будет возвращать 0, если x и y равны, 1, если x больше y и -1, если x меньше y