Jak mogę porównać, jeśli BigDecimal
wartość jest większa od zera?
java
compare
bigdecimal
Santhosh
źródło
źródło
BigDecimal
implementujeComparable
funkcje porównywania, takie jaklt, le, eq, ne
lepiej zostać przeniesionym doComparableUtils
. Dzięki temu można ich używać do dowolnych innych klas, takich jakDate
lub niestandardowych typów.Odpowiedzi:
To tak proste, jak:
Dokumentacji
compareTo
faktycznie określa, że zwróci -1, 0 lub 1, ale bardziej ogólnyComparable<T>.compareTo
sposób tylko gwarantuje mniej niż zero, zero, lub większym niż zero dla odpowiednich trzech przypadkach - tak ja zwykle po prostu trzymać się tego porównania.źródło
value
ma wartość zero, ale niezerową skalę (np. Oblicza0.00
zamiast0
). Prawdopodobnie chcesz wziąć pod uwagę, że jest to zero.compareTo()
Metoda rzeczywiście to zrobić. Aleequals()
metoda nie. (Kolejny dowód, jeśli taki był potrzebny, że Loki lub jeden z jego awatarów żyje i ma się dobrze, i zajął się tworzeniem oprogramowania.)LocalDate
włączanieisBefore
, wskazuje, że Oracle czuje to samo. To nie jest idealne, ale myślę, że w tych okolicznościach napisanieisGreaterThan
metody narzędziowej jest nieco bardziej czytelne .compareTo
się zwrócić 0. Ale jeśli się martwisz, testowanie powinno być łatwe.Możliwy lepszy sposób :
źródło
String
zainicjowanego,BigDecimal
aby sprawdzić, czy to jest,-
czy nie? To moje najlepsze przypuszczenie, jak to może działać. Wydaje się szybsze, aby faktycznie ustalić, czy numer0
. Czy to jest poprawne? Z góry bardzo dziękuję Antonowi Bessonovowi!BigDecimal.compareTo()
metodę zdekompilowaną , zobaczysz, że wywołuje onasignum()
dwa razy. Jeśli chodzi o wydajność,signum()
jest ona lepsza.Użyj
compareTo()
funkcji wbudowanej w klasę.źródło
bezpieczniej jest skorzystać z tej metody
compareTo()
wydruk na konsoli
compareTo()
zwrotyteraz możesz użyć swojego problemu
lub
Mam nadzieję, że ci pomogło.
źródło
użycie „.intValue ()” na obiekcie BigDecimal jest niewłaściwe, gdy chcesz sprawdzić, czy jego wartość jest większa od zera. Pozostała tylko opcja „.compareTo ()”.
źródło
źródło