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?
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?
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.
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
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 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.