than - mayor o igual bigdecimal java
Cómo usar operadores de comparación como>,=,<en BigDecimal (7)
Aquí hay un ejemplo para los seis operadores de comparación booleanos (<, ==,>,> =,! =, <=):
BigDecimal big10 = new BigDecimal(10);
BigDecimal big20 = new BigDecimal(20);
System.out.println(big10.compareTo(big20) < -1); // false
System.out.println(big10.compareTo(big20) <= -1); // true
System.out.println(big10.compareTo(big20) == -1); // true
System.out.println(big10.compareTo(big20) >= -1); // true
System.out.println(big10.compareTo(big20) > -1); // false
System.out.println(big10.compareTo(big20) != -1); // false
System.out.println(big10.compareTo(big20) < 0); // true
System.out.println(big10.compareTo(big20) <= 0); // true
System.out.println(big10.compareTo(big20) == 0); // false
System.out.println(big10.compareTo(big20) >= 0); // false
System.out.println(big10.compareTo(big20) > 0); // false
System.out.println(big10.compareTo(big20) != 0); // true
System.out.println(big10.compareTo(big20) < 1); // true
System.out.println(big10.compareTo(big20) <= 1); // true
System.out.println(big10.compareTo(big20) == 1); // false
System.out.println(big10.compareTo(big20) >= 1); // false
System.out.println(big10.compareTo(big20) > 1); // false
System.out.println(big10.compareTo(big20) != 1); // true
Tengo una clase de dominio con unitPrice establecido como tipo de datos BigDecimal. Ahora estoy tratando de crear un método para comparar precios, pero parece que no puedo tener operadores de comparación en el tipo de datos BigDecimal. ¿Tengo que cambiar el tipo de datos o hay alguna otra forma?
Cada objeto de la clase
BigDecimal
tiene un método
compareTo
que puede usar para compararlo con otro BigDecimal.
El resultado de
compareTo
se compara
> 0
,
== 0
o
< 0
según lo que necesite.
Lea la documentación y lo descubrirá.
Los operadores
==
,
<
,
>
y así sucesivamente solo se pueden usar en tipos de datos primitivos como
int
,
long
,
double
o sus clases de contenedor como
Integer
y
Double
.
De la documentación de
compareTo
:
Compara este
BigDecimal
con elBigDecimal
especificado.Este
BigDecimal
que dos objetosBigDecimal
que tienen el mismo valor pero tienen una escala diferente (como 2.0 y 2.00) son iguales. Este método se proporciona con preferencia a los métodos individuales para cada uno de los seis operadores de comparación booleanos (<, ==,>,> =,! =, <=). El idioma sugerido para realizar estas comparaciones es:(x.compareTo(y) <op> 0)
, donde<op>
es uno de los seis operadores de comparación.Devuelve: -1, 0 o 1, ya que este BigDecimal es numéricamente menor que, igual o mayor que val.
Para ser breve:
firstBigDecimal.compareTo(secondBigDecimal) < 0 // "<"
firstBigDecimal.compareTo(secondBigDecimal) > 0 // ">"
firstBigDecimal.compareTo(secondBigDecimal) == 0 // "=="
firstBigDecimal.compareTo(secondBigDecimal) >= 0 // ">="
Puede usar el método llamado
compareTo
,
x.compareTo(y)
.
Devolverá 0 si x e y son iguales, 1 si x es mayor que y y -1 si x es menor que y
Usando com.ibm.etools.marshall.util.BigDecimalRange, la clase de utilidad de IBM se puede comparar si BigDecimal está dentro del rango.
boolean isCalculatedSumInRange = BigDecimalRange.isInRange(low, high, calculatedSum);
Use el método
compareTo
de BigDecimal:
public int compareTo (BigDecimal val) Compara este BigDecimal con el BigDecimal especificado.
Returns: -1, 0, or 1 as this BigDecimal is numerically less than, equal to, or greater than val.
BigDecimal
no es una primitiva, por lo que no puede utilizar los operadores
<
,
>
.
Sin embargo, dado que es un
Comparable
, puede usar
compareTo
para el mismo efecto.
P.ej:
public class Domain {
private BigDecimal unitPrice;
public boolean isCheaperThan(BigDecimal other) {
return unitPirce.compareTo(other.unitPrice) < 0;
}
// etc...
}