BigDecimal: .add niby tylko dodawanie, ale nie tylko, bo sprawdza dziwne wartości

No zobacz:



public BigDecimal add(BigDecimal augend) {

if (this.intCompact != INFLATED) { if ((augend.intCompact != INFLATED)) { return add(this.intCompact, this.scale, augend.intCompact, augend.scale); } else { return add(this.intCompact, this.scale, augend.intVal, augend.scale); } } else { if ((augend.intCompact != INFLATED)) { return add(augend.intCompact, augend.scale, this.intVal, this.scale); } else { return add(this.intVal, this.scale, augend.intVal, augend.scale); } } }



Jak widać, to jest dużo więcej niż a + b. To, co zwraca moją uwagę, to to, że jest tylko jedna wartość w parametrach, bo druga to ta, na której to jest wywoływane, bo to zawsze jest wywoływane na obiekcie.

Ciekawostka, że BigDecimali nie można zrobić tak po prostu a+b:


Nie wiedziałem tego do tej pory :)

Komentarze

Popularne posty z tego bloga

IntelliJ: zmiana rozmiaru czcionki scrollem

ThunderBird: jak zrobić professional stopkę