Como Comparar Valores BigDecimal em Java
Neste tutorial mostro como Comparar Valores BigDecimal usando o Java
Introdução
Este artigo tem como objetivo demonstrar como comparar valores BigDecimal em Java, para isso vamos utilizar o método (compareTo) da classe BigDecimal.
Geralmente quando queremos comparar valores em java usamos os operadores (>, < , ==), más no caso de valores em (BigDecimal) ele não obedece está regra, então para realizar a comparação precisamos usar o método (compareTo) que existe na classe (BigDecimal);
O metódo compareTo
O método compareTo é um método da interface Comparable em Java. O método compareTo é implementado por classes que desejam fornecer uma lógica de comparação entre duas instâncias da mesma classe.
Implementação do metódo compareTo
Ao implementar o método compareTo a classe BigDecimal, realiza a comparação dos valores a serem comparado e após o processo de comparação retorna um (int) informando o resultado da comparação os valores retornados são (-1 , 0, 1);
Sendo que (-1) informa que o valor referência é menor que o valor comparado, (0) se o valor referência for igual ao valor informado para comparar e (1) caso o valor referência seja maior que o valor informado para ser comparado.
Como comparar Valores BigDecimal
Para realizar a comparação, precisa informar um valor de referência e usar o método compareTo passando o valor que queremos verificar como parâmetro, então a sintaxe, ficaria da seguinte forma:
valorReferencia.compareTo(valorASercomparado)
Com base nisso o método (compareTo) retorna um int ao realizar a comparação, com os seguinte retorno:
- (0) – Caso os valores forem iguais;
- (1) – Caso o valor da esquerda for maior que o valor da direita;
- (-1) – Caso o valor da esquerda for menor que o valor da direita;
Com base na explicação acima, vamos para o código, abaixo mostro alguns exemplos testando todas possibilidades :
import java.math.BigDecimal;
public class CompararValoresBigDecimal {
public static void main(String args[]) {
// Valor1 igual Valor2
BigDecimal valor1 = new BigDecimal("10.00");
BigDecimal valor2 = new BigDecimal("10.00");
int retornoCompareTo = valor1.compareTo(valor2);
System.out.println("retornoCompareTo: " + retornoCompareTo);
if (retornoCompareTo == 0) {
System.out.println("Valor1 é igual Valor2");
}
// Valor1 maior que Valor2
valor1 = new BigDecimal("20.00");
valor2 = new BigDecimal("10.00");
retornoCompareTo = valor1.compareTo(valor2);
System.out.println("retornoCompareTo: " + retornoCompareTo);
if (retornoCompareTo == 1) {
System.out.println("Valor1 é maior que Valor2");
}
// Valor1 maior que Valor2
valor1 = new BigDecimal("10.00");
valor2 = new BigDecimal("20.00");
retornoCompareTo = valor1.compareTo(valor2);
System.out.println("retornoCompareTo: " + retornoCompareTo);
if (retornoCompareTo == -1) {
System.out.println("Valor1 é menor que Valor2");
}
}
}
Explicação do Código
No código acima estou usando 3 exemplos,
- No 1ª exemplo informo 2 valores iguais e espero que retorne o valor (0);
- No 2ª exemplo o valor referência é maior que o valor passado no parâmetro do método (compareTo), então o esperado é o valor (1);
- NO 3ª exemplo o valor referência é menor que o valor passado no parâmetro do método (compareTo), então o esperado é o valor (-1);
Segue abaixo a saída do console da ide:
retornoCompareTo: 0
Valor1 é igual Valor2
retornoCompareTo: -1
Caso queira visualizar a implementa acima segue um breve vídeo explicando o processo:
Segue o link do código fonte usado neste tutorial:

