Comparando bigdecimais

Olá pessoal, sei que minha pergunta pode parecer um tanto ridícula, mas tô sofrendo pra entender, então vamos lá…

eu tenho uma variável do tipo bigdecimal buscada no meu banco e quero comparar com um valor decimal tipo:


BigDecimal x = new BigDecimal(0.00);
area = rs.getBigDecimal("area_terreno");

if (x > 300.00 {
    ....
    ....
}

como é que eu faço essa comparação sendo que não posso usar os operadores “<>” ???

estou utilizando o compareTo mas não estou conseguindo êxito, estou fazendo assim:

BigDecimal  y = new BigDecimal(300.00);
BigDecimal x = new BigDecimal(0.00);
area = rs.getBigDecimal("area_terreno");

if ( y.compareTo(x) < 1 {
    ....
    ....
} else {
    ....
    .... 
}

qdo os valores são maiores que 300 até que ele está passando pelo if mas quando ele é menor ele não passa pelo else, ele passa pelo if tbm

Acho que conseguir explicar (hehe)

Um abraço a todos.

A logica de comparação com compareTo é :

Se a > b : a.compareTo(b) > 0
Se a < b : a.compareTo(b) < 0
Se a = b : a.compareTo(b) = 0
Se a >= b : a.compareTo(b) >= 0
Se a <= b : a.compareTo(b) <= 0

A ordem dos fatores não é aleatória e o sinal permanece o mesmo

No seu caso

x > 300.00

equivale a

B = 300.00
x > B

ou seja

x.compareTo(B) > 0

então o codigo final seria

BigDecimal  y = new BigDecimal(300.00);
BigDecimal x = new BigDecimal(0.00);
area = rs.getBigDecimal("area_terreno");

if ( x.compareTo(y) > 0 {
    ....
    ....
} else {
    ....
    .... 
}

As comparações sã ofeitas com zero e não com 1. Esse era o erro principal. O outro é que a ordem de x e y não é aleatória

Dica: considere fazer y final e chamar-lhe num nome que tenha significado.

1 curtida