252 votes

Comment vérifier si BigDecimal variable = 0 en java?

J'ai le code suivant en Java;

    if (selectPrice.compareTo(new BigDecimal("0.00")) == 0){
        return true;
    }

Quelle est la meilleure façon de les écrire la condition if?

593voto

Bohemian Points 134107

Utiliser l' BigDecimal constante BigDecimal.ZERO:

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

Cela évite la construction d'un nouveau BigDecimal de zéro à chaque appel.

Pour info, BigDecimal a des constantes BigDecimal.ONE et BigDecimal.TEN trop.


Remarque!

La méthode BigDecimal.equals() prend échelle en considération:

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

donc c'est pas adaptée pour ce genre de comparaison. Toutefois, BigDecimal.compareTo() ne tient pas compte de l'échelle lors de la comparaison:

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

113voto

kman Points 111

Sinon, signum() peut être utilisé:

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

26voto

pablochan Points 2047

Il y a une constante que vous pouvez vérifier contre:

someBigDecimal.compareTo(BigDecimal.ZERO) == 0

5voto

gpol Points 395

J'utilise habituellement le suivant:

if (selectPrice.compareTo(BigDecimal.ZERO) == 0) { ... }

5voto

NominSim Points 5160

Vous pouvez utiliser equals (), car ils sont des objets, et d'utiliser le construit en ZÉRO exemple:

if(selectPrice.equals(BigDecimal.ZERO))

Notez que .equals() prend échelle en compte, donc à moins que selectPrice est à la même échelle (0) .ZERO , puis ce sera le retour de faux.

À prendre à l'échelle de l'équation:

if(selectPrice.compareTo(BigDecimal.ZERO) == 0)

Il est à noter que pour les mathématiques certaines situations, 0.00 != 0, c'est pourquoi j'imagine .equals() prend de l'ampleur en compte. 0.00 donne une précision au centième place, alors qu' 0 n'est pas précis. Selon la situation, vous pouvez coller avec .equals().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X