Introdução
Um problema que encontrei quando comecei a utilizar BigDecimal, foi exatamente o fato de conseguir manipular os números 
quando utiliza esta tipagem.
Abaixo, explico de maneira simples como manipular valores em BigDecimal. Vale salientar que x e y são valores do tipo 
BigDecimal.
Arredondamento de Casas Decimais
Para realizar o arredondamento, utilizaremos o método: x.setScale(int,int)
Onde o primeiro parâmetro é a quantidade de casas decimais e a segundo, o tipo de arrendamento.
- Código utilizado:
package com.blogspot.maguscode;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class TesteBigDecimal {
   
    public static void main(String args[])
    {
        BigDecimal numero = new BigDecimal(20.005);
        //Especificar arredondamento de casas decimais
        System.out.println("Visualização do número(20.005) arredondado(duas casas decimais):");
   
        //Só será arrendodado para o número maior se  a difernça for maior que 0.5
        System.out.println("(Arredondamento para baixo): "+numero.setScale(2,RoundingMode.DOWN));
       
        //Só será arrendodado para o número maior se  a diferença for maior ou igual a 0.5
        System.out.println("(Arredondamento para cima): "+numero.setScale(2,RoundingMode.UP));
       
       
    }
   
   
}
-  No primeiro caso, o número é arredondado para cima, ou seja, o número 20.005 passa a ser 20.01.
-  No segundo caso, o número é arredondado para baixo, ou seja, o número 20.005 passa a ser 20.00.
Operações de Comparação
Para fazer operações de comparação, não é possível usar (>,<,==), como no caso dos números primitivos 
(int,double,float,long) é necessário utilizar a anotação: x.compareTo(y)
Por padrão, o retorno desta função será:
-1 - para x menor que y
0 - para x igual a y
1 - para x maior que y
Abaixo, é possível visualizar alguns exemplos:
- Código utilizado:
package com.blogspot.maguscode;
import java.math.BigDecimal;
public class TesteBigDecimal {
   
    public static void main(String args[])
    {
        BigDecimal numero = new BigDecimal(20.005);
        int valorRetorno;
       
       
        //Repostas x.compareTo(y):
        //1  x maior que y
        //0  x igual a y
        //-1 x menor que y
       
        System.out.println("\n\n");       
        System.out.println("Comparações");
       
        valorRetorno = numero.compareTo(new BigDecimal(20.001));
        System.out.println("Caso 1 (MaiorQue): " + valorRetorno);
        valorRetorno = numero.compareTo(new BigDecimal(20.006));
        System.out.println("Caso 1 (MenorQue): " + valorRetorno);
       
        valorRetorno = numero.compareTo(numero);
        System.out.println("Caso 1 (Igual):" + valorRetorno);
       
       
    }
   
   
}
Operações Matemáticas Simples
Quando se utiliza números do tipo BigDecimal, não é possível realizar operações básicas entre eles como se fossem números 
primitivos, para resolver tal problema, é necessário utilizar:
-  x.substrac(y) equivale a x-y
-  x.add(y) equivale a x+y
-  x.div(y) equivale a x/y
-  x.mult(y) equivale a x*y
- Código utilizado:
package com.blogspot.maguscode;
import java.math.BigDecimal;
public class TesteBigDecimal {
   
    public static void main(String args[])
    {
       
        System.out.println("Operações básicas:");
        BigDecimal numeroParaOperacoes= new BigDecimal(20);
       
        //Operação de soma x.add(y)
        System.out.println("Soma: "+ numeroParaOperacoes.add(BigDecimal.TEN));
        //Operação de soma x.substract(y)
        System.out.println("Subtração: "+numeroParaOperacoes.subtract(BigDecimal.TEN));
       
        //Operacao de divisao x.divide(y)
        System.out.println("Divisão: "+numeroParaOperacoes.divide(BigDecimal.TEN));
       
        //Opeação de multiplicação x
        System.out.println("Multiplicao: "+numeroParaOperacoes.multiply(BigDecimal.TEN));
    }
   
   
}
Dica previamente publicada em: 
Maguscode.Blogspot - Manipulando Bigdecimal
 
Nenhum comentário foi encontrado.