Manipulando BigDecimal

Publicado por Robson Fernando Gomes em 21/05/2012

[ Hits: 24.938 ]

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

NullPointerException - O que é?

Pegar o próximo valor de uma sequence no Oracle

ZSNES - Emulador de Super Nintendo para GNU/Linux

Como listar somente os diretórios no Linux

Remover a barra padrão de um JFrame

Leitura recomendada

Instalação do Java 8 no Linux Mint e Ubuntu

Entendendo intefaces - POO

Por quê o Java tem uma xícara de café na logo

Convertendo Matriz para Lista em Java e Lista para Matriz

Como converter ASCII para char ou char para ASCII em Java

  

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