Czy można porównywać obiekty typu BigDecimal?

Czy można porównywać obiekty typu BigDecimal?
Agnes94
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
1

Cześć!

Mam do Was pytanie (jak w tytule) - czy obiekty BigDecimal da się porównywać?

Dla przykładu:

Kopiuj

BigDecimal bd1 = new BigDecimal("666666.4444");
BigDecimal bd2 = new BigDecimal("888888.2222");

if (bd1 > bd2) {
    System.out.println(bd1 + " jest większe od " + bd2);
} else {
    System.out.println(bd1 + " jest mniejsze od " + bd2);
}

Przy bd1 > bd2 wyskakuje błąd typu:

screenshot-20220221185418.png

Z góry bardzo dziękuję za odpowiedź! ;)

lion137
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5023
Agnes94
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
0

@lion137: dziękuję!

ZD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2310
0
Agnes94 napisał(a):

Z góry bardzo dziękuję za odpowiedź! ;)

Poświęciłaś pól roku na pytania na forum - na wiedzę którą byś miała po godzinie czytania książki.
Wszystkie zagadnienia, jakie wyciągasz, są z 2-4 początkowych rozdziałów.

LU
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Gdańsk
5

Warto też wspomnieć, że wyniki equals / compareTo w przypadku BigDecimal nie zawsze będą zbieżne:

Kopiuj
var b1 = new BigDecimal("100");
var b2 = new BigDecimal("100").setScale(2, RoundingMode.HALF_UP);
System.out.println(b1.equals(b2));    // false
System.out.println(b1.compareTo(b2)); // 0  

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.