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: