BigDecimal bd= new BigDecimal("00.0000000000");
//now bd format to 0E-10
if(BigDecimal.ZERO.equals(bd) || bd.equals("0E-10"))
{
flag=true;
}
Il y a deux problèmes dans le code ci-dessus
Quelqu'un peut-il suggérer. Merci
Vous avez donné au constructeur dix chiffres après la virgule décimale, donc même si tous sont nuls, BigDecimal
a décidé de définir son interne scale
à 10. Cela explique le -10
in "0E-10"
.
Quant à equals
, le Javadoc dit :
Compare cela
BigDecimal
avec le spécifiéObject
pour l'égalité. À la différencecompareTo
, cette méthode considère deuxBigDecimal
objets égaux seulement s'ils sont égaux en valeur et en échelle (donc 2,0 n'est pas égal à 2,00 par rapport à cette méthode).
Conclusion:
compareTo()
place de equals()
.BigDecimal
à String
car cela ne fonctionnera pas.Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots