Manipulando BigDecimal

Publicado por Robson Fernando Gomes em 21/05/2012

[ Hits: 25.510 ]

Blog: http://maguscode.blogspot.com/

 


Manipulando BigDecimal



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

Outras dicas deste autor

Exibir ponto em expressão regular (regex)

Gerar jar no Eclipse e executar

Como verificar ou setar permissões em arquivos através do JAVA

Copiar o conteúdo de uma lista para outra lista em Java

Montando e conectando em um servidor NFS

Leitura recomendada

BlueJ - Para iniciantes em Java e programação orientada a objetos

Java - Instalação em três passos no Ubuntu

Executar comandos do terminal Linux em Java

javac no Debian

POO - Conceitos de herança e composição

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts