JavaTutorias

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
Valor1 é maior que Valor2
retornoCompareTo: -1
Valor1 é menor que Valor2

 

Caso queira visualizar a implementa acima segue um breve vídeo explicando o processo:

 

 

 

 

Segue o link do código fonte usado neste tutorial:

Código Fonte

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *