way than other operator mayor igual greater con comparar como best java spring operator-keyword bigdecimal

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 el BigDecimal especificado.

Este BigDecimal que dos objetos BigDecimal 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... }