Manipulando BigDecimal

Publicado por Robson Fernando Gomes em 21/05/2012

[ Hits: 25.458 ]

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

Como gerar números aleatórios em Java

Como listar somente os diretórios no Linux

Instalação do servidor WebLogic no Linux

Criar exceções

Descobrir se uma determinada tabela, sinonimo ou usuário existe no Oracle

Leitura recomendada

Instalação do Java no Debian, fácil-fácil

Java 7 no Linux Mint 14 e Ubuntu - Instalação via PPA

Instalar Java 8 (Oracle) no Ubuntu 14.04 LTS 32 bits, com plugin para Mozilla 40.0

Introdução ao Java Micro Edition (J2ME)

Compilando OpenJDK e IcedTea no Slackware usando SlackBuild de AlienBOB

  

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