Wie kann ich vergleichen, wenn der BigDecimal
Wert größer als Null ist?
java
compare
bigdecimal
Santhosh
quelle
quelle
BigDecimal
implementiertComparable
die Vergleichsfunktionen wielt, le, eq, ne
besser auf a verschoben werdenComparableUtils
. Sie können also für andere Klassen wieDate
oder benutzerdefinierte Typen verwendet werden.Antworten:
Es ist so einfach wie:
Die Dokumentation für gibt
compareTo
tatsächlich an, dass -1, 0 oder 1 zurückgegeben wird, aber die allgemeinereComparable<T>.compareTo
Methode garantiert nur für die entsprechenden drei Fälle weniger als Null, Null oder mehr als Null - daher halte ich mich normalerweise nur an diesen Vergleich.quelle
value
hat einen Wert von Null, aber eine Skala ungleich Null (z. B. wird0.00
anstelle von ausgewertet0
). Sie möchten wahrscheinlich berücksichtigen, dass es gleich Null ist. DiecompareTo()
Methode wird dies in der Tat tun. Aber dieequals()
Methode wird nicht. (Ein weiterer Beweis, falls vorhanden, dass Loki oder einer seiner Avatare lebt und gesund ist und in die Softwareentwicklung eingetreten ist.)LocalDate
include enthalten,isBefore
ein Hinweis darauf, dass Oracle genauso denkt. Es ist nicht ideal, aber ich denke, es ist unter diesen Umständen geringfügig besser lesbar, eine Dienstprogrammmethode zu schreibenisGreaterThan
.compareTo
, 0 zurückzugeben. Aber wenn Sie sich Sorgen machen, sollte es für Sie leicht zu testen sein.Möglicher besserer Weg :
quelle
String
Initialisierung erfasst wirdBigDecimal
, um festzustellen , ob dies der Fall ist-
oder nicht? Das ist meine beste Vermutung, wie es funktionieren könnte. Scheint schneller zu sein, um tatsächlich festzustellen, ob die Nummer ist0
. Ist das richtig? Vielen Dank im Voraus Anton Bessonov!BigDecimal.compareTo()
Methode ansehen , werden Sie feststellen, dass siesignum()
zweimal aufgerufen wird . Was die Leistung angeht,signum()
ist es besser.Verwenden Sie
compareTo()
eine in die Klasse integrierte Funktion.quelle
Es ist sicherer, die Methode zu verwenden
compareTo()
Konsolendruck
compareTo()
kehrt zurückJetzt können Sie für Ihr Problem verwenden
oder
Ich hoffe es hat dir geholfen.
quelle
Die Verwendung von ".intValue ()" für ein BigDecimal-Objekt ist nicht richtig, wenn Sie überprüfen möchten, ob es größer als Null ist. Die einzige verbleibende Option ist die Methode ".compareTo ()".
quelle
quelle