Как использовать операторы сравнения, такие как, =,
У меня есть класс домена с 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);