Saltar al contenido

¿Cómo verificar si la variable BigDecimal == 0 en Java?

Solución:

Usar compareTo(BigDecimal.ZERO) en lugar de equals():

if (price.compareTo(BigDecimal.ZERO) == 0) // see below

Comparando con el BigDecimal constante BigDecimal.ZERO evita tener que construir un new BigDecimal(0) cada ejecución.

FYI, BigDecimal también tiene constantes BigDecimal.ONE y BigDecimal.TEN por su conveniencia.


¡Nota!

La razón por la que no puedes usar BigDecimal#equals() es que se necesita escala en consideración:

new BigDecimal("0").equals(BigDecimal.ZERO) // true
new BigDecimal("0.00").equals(BigDecimal.ZERO) // false!

por lo que no es adecuado para una comparación puramente numérica. Sin embargo, BigDecimal.compareTo() no considera la escala al comparar:

new BigDecimal("0").compareTo(BigDecimal.ZERO) == 0 // true
new BigDecimal("0.00").compareTo(BigDecimal.ZERO) == 0 // true

Alternativamente, se puede usar signum ():

if (price.signum() == 0) {
    return true;
}

Hay una constante con la que puede verificar:

someBigDecimal.compareTo(BigDecimal.ZERO) == 0
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *