Как использовать операторы сравнения, такие как, =,
У меня есть класс домена с unitPrice, установленным как BigDecimal тип данных. Теперь я пытаюсь создать метод сравнения цены, но, похоже, у меня нет операторов сравнения в BigDecimal типе данных. Должен ли я изменить тип данных или есть другой способ?
6 ответов
каждый объект класса BigDecimal
метод compareTo
вы можете использовать, чтобы сравнить его с другим BigDecimal. Результат по сравнению > 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.
короче говоря:
firstBigDecimal.compareTo(secondBigDecimal) < 0 // "<"
firstBigDecimal.compareTo(secondBigDecimal) > 0 // ">"
firstBigDecimal.compareTo(secondBigDecimal) == 0 // "=="
использовать 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.
Вы можете использовать метод, названный compareTo
, x.compareTo(y)
. Он вернет 0, если x и y равны, 1, Если x больше y и -1, Если x меньше y
BigDecimal
не является примитивным, поэтому вы не можете использовать <
, >
операторы. Однако, так как это Comparable
можно использовать compareTo(BigDecimal)
к тому же эффекту. Например:
public class Domain {
private BigDecimal unitPrice;
public boolean isCheaperThan(BigDecimal other) {
return unitPirce.compareTo(other.unitPrice) < 0;
}
// etc...
}
С помощью com.компания IBM.электронными инструментами.Маршалл.утиль.BigDecimalRange util класс IBM можно сравнить, если BigDecimal в ассортименте.
boolean isCalculatedSumInRange = BigDecimalRange.isInRange(low, high, calculatedSum);