Comment comparer si la BigDecimal
valeur est supérieure à zéro?
java
compare
bigdecimal
Santhosh
la source
la source
BigDecimal
implémenteComparable
les fonctions de comparaison commelt, le, eq, ne
mieux être déplacé vers aComparableUtils
. Ils peuvent donc être utilisés pour toutes les autres classes, commeDate
les types personnalisés.Réponses:
C'est aussi simple que:
La documentation de
compareTo
spécifie en fait qu'il renverra -1, 0 ou 1, mais laComparable<T>.compareTo
méthode plus générale ne garantit que moins de zéro, zéro ou supérieur à zéro pour les trois cas appropriés - donc je m'en tiens généralement à cette comparaison.la source
value
ait une valeur de zéro mais une échelle non nulle (par exemple, il évalue à0.00
au lieu de0
). Vous voudrez probablement considérer qu'il est égal à zéro. LacompareTo()
méthode le fera en effet. Mais laequals()
méthode ne le sera pas. (Une autre preuve, le cas échéant, que Loki ou l'un de ses avatars est bel et bien vivant et est passé au développement de logiciels.)LocalDate
include,isBefore
soit une indication qu'Oracle ressent la même chose. Ce n'est pas idéal, mais je pense qu'il est légèrement plus lisible dans ces circonstances d'écrire uneisGreaterThan
méthode utilitaire .compareTo
à retourner 0. Mais si vous êtes inquiet, il devrait être facile pour vous de tester.Meilleur moyen possible :
la source
String
initialiséBigDecimal
pour voir s'il l'est-
ou non? C'est ma meilleure estimation de la façon dont cela pourrait fonctionner. Semble plus rapide pour réellement déterminer si le nombre est0
. Est-ce correct? Merci beaucoup d'avance Anton Bessonov!BigDecimal.compareTo()
méthode décompilée , vous constaterez qu'elle appellesignum()
deux fois. Donc, en ce qui concerne les performances,signum()
c'est mieux.Utilisez la
compareTo()
fonction intégrée à la classe.la source
il est plus sûr d'utiliser la méthode
compareTo()
impression de la console
compareTo()
Retourmaintenant pour votre problème, vous pouvez utiliser
ou
J'espère que cela vous a aidé.
la source
utiliser ".intValue ()" sur un objet BigDecimal n'est pas correct lorsque vous voulez vérifier si sa râpe est supérieure à zéro. La seule option qui reste est la méthode ".compareTo ()".
la source
la source