Manipulando BigDecimal

Publicado por Robson Fernando Gomes em 21/05/2012

[ Hits: 20.767 ]

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

Instalação de arquivos .bin no Linux

Utilizando SSH

Iniciar, reiniciar e desligar o modo gráfico através do terminal (Gnome)

Executar comandos do terminal Linux em Java

Verificando se um número é par ou ímpar em Java

Leitura recomendada

Como gerar números aleatórios em Java

Compilando com o javac

Listar todos arquivos de uma pasta com Java

Arredondar e diminuir o número de casas decimais em Java

Adquirindo informações de sessão no Oracle

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts