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.