Com a classe BigDecimal do Java, é possível lidar com precisão com números de ponto flutuante complexos. Para isso, primeiro é ne­ces­sá­rio criar esses números e, em seguida, utilizar vários métodos que permitem trabalhar com eles. A sintaxe de cada método ge­ral­mente mantém uma estrutura se­me­lhante, o que facilita a uti­li­za­ção da classe após um breve trei­na­mento, mesmo no caso de ini­ci­an­tes.

O que é Big­De­ci­mal em Java?

Em Java, BigDecimal é uma classe que permite re­pre­sen­tar e processar com grande precisão números de ponto flutuante complexos de tamanho (em teoria) ilimitado. Através de di­fe­ren­tes métodos, é possível im­ple­men­tar com máxima precisão operações de ar­re­don­da­mento, arit­mé­tica, conversão de formato, hashing e com­pa­ra­ções avançadas.

Java BigDecimal consiste numa escala inteira de 32 bits e um valor inteiro não es­ca­lo­nado com precisão ar­bi­trá­ria. Neste contexto, «escala» refere-se ao número de dígitos após a vírgula decimal, desde que estes sejam maiores ou iguais a zero. Se o valor for menor que zero, ele é mul­ti­pli­cado por “10^(-escala)”. O tamanho máximo da classe é limitado apenas pela memória do com­pu­ta­dor. No entanto, trata-se de uma limitação prin­ci­pal­mente teórica, pois é im­pro­vá­vel que um programa crie um número que exceda a memória dis­po­ní­vel. Enquanto BigDecimal em Java é destinado ex­clu­si­va­mente a números de vírgula flutuante, BigInteger é usado para números inteiros.

Para que serve a aula?

Embora nem sempre seja ne­ces­sá­rio recorrer ao Java BigDecimal, há situações e áreas em que essa classe é es­pe­ci­al­mente valiosa. Por exemplo, ela é usada em cálculos em que até mesmo a posição decimal mais distante pode ter um grande impacto, como nas tran­sa­ções de comércio ele­tró­nico. Também é usada em análises es­ta­tís­ti­cas precisas. Além disso, há um grande número de programas, como os uti­li­za­dos no controlo e navegação de aviões ou foguetes, que dependem desta classe. Por sua vez, no âmbito da saúde também se recorre ao Java BigDecimal.

Como se cria um objeto?

Se quiser usar BigDecimal em Java, primeiro deve importar a classe para o programa Java. Depois de fazer isso, pode declarar um objeto dessa classe, atribuir-lhe o valor desejado como argumento e passá-lo para o cons­tru­tor Java cor­res­pon­dente. Em seguida, pode usar os BigDecimals criados em Java. A seguir, mostramos como importar a classe e declarar dois objetos de exemplo:

/ / Programa de Java para la clase BigDecimal
import java.math.BigDecimal;
public class ejemplo BigDecimal
{
	public static void main(String[] args)
	{
		/ / Crear dos nuevos BigDecimals 
		BigDecimal ejemplouno =
			new BigDecimal ("1275936001.744297361");
		BigDecimal ejemplodos =
			new BigDecimal ("4746691047.132719503");
	}
}
java

Agora pode utilizar estes objetos com os métodos da classe que desejar.

Exemplos de Big­De­ci­mal em Java

Depois de criar os objetos, são uti­li­za­dos di­fe­ren­tes métodos para executar operações e poder utilizar os objetos. Através de exemplos simples, apre­sen­ta­mos como esses métodos funcionam e quais re­sul­ta­dos você pode obter. Com o comando Java System.out.println() , uma linha de texto é impressa na saída padrão.

Soma de dois Big­De­ci­mals

Para somar dois Big­De­ci­mals em Java, utiliza-se o método add(). Primeiro, indique os dois valores que deseja somar. No nosso exemplo, o valor «ExemploUm» deve ser somado ao valor «Exem­plo­Dois». Isto tem o seguinte aspecto:

EjemploUno =
EjemploUno.add(EjemploDos);
System.out.println ("El resultado después de la suma es: " + EjemploUno);
java

Subtrair números

Para subtrair dois valores, é ne­ces­sá­rio utilizar o método subtract(). No exemplo a seguir, “Exem­plo­Dois” é subtraído de “ExemploUm”. O código é o seguinte:

EjemploUno =
EjemploUno.restar(EjemploDos);
System.out.println ("El resultado que buscas después de la resta es: " + EjemploUno);
java

Mul­ti­pli­car valores

O método usado para mul­ti­pli­car dois Big­De­ci­mals em Java é muito se­me­lhante aos de somar ou subtrair. É chamado multiply() e usa como argumento o objeto “mul­ti­pli­ca­dor”. Se quiser mul­ti­pli­car “Exem­plo­Dois” por “ExemploUm”, o código que deve ser usado é:

EjemploUno =
EjemploUno.multiplicar(EjemploDos);
System.out.println ("El resultado después de la multiplicación es: " + EjemploUno);
java

Dividir números

Para dividir dois Big­De­ci­mals em Java, utilize o método divide(). A sintaxe continua sendo muito se­me­lhante à de outros métodos e pode ser apre­sen­tada da seguinte forma:

EjemploUno =
EjemploUno.divide(EjemploDos);
System.out.println ("El resultado que buscas después de la división es: " + EjemploUno);
java

No entanto, só será obtido um resultado se este for exato ou se for um número inteiro. Caso contrário, aparecerá a seguinte mensagem de erro: java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result, que descreve um erro em tempo de execução. Para evitar esta mensagem, podem ser aplicadas di­fe­ren­tes opções de ar­re­don­da­mento, que podem ser par­ti­lha­das com java.math.Roun­ding­Mode. Existem di­fe­ren­tes cons­tan­tes à escolha:

Constante Função
CEILING Ar­re­don­da­mento positivo para o infinito.
DOWN Ar­re­don­da­mento para 0.
FLOOR Ar­re­don­da­mento para o infinito negativo.
HALF_DOWN Ar­re­don­da­mento para o número vizinho seguinte e para o oposto de 0, se ambos estiverem à mesma distância.
HALF_EVEN Ar­re­don­da­mento para o número vizinho seguinte e para o número par seguinte, se ambos estiverem à mesma distância.
HALF_UP Ar­re­don­da­mento para o número vizinho seguinte na direção de 0, desde que ambos estejam à mesma distância.
UN­NE­CES­SARY Omite o ar­re­don­da­mento e realiza apenas operações exatas. Só pode ser utilizado se a divisão for exata.
UP Ar­re­don­da­mento a partir de 0.

Resumo dos métodos mais im­por­tan­tes

Depois de aprender a utilizar Big­De­ci­mals em Java, bem como os di­fe­ren­tes métodos as­so­ci­a­dos, apre­sen­ta­mos a seguir alguns dos métodos mais im­por­tan­tes.

Método Função
abs() Big­De­ci­mal com o valor absoluto deste Big­De­ci­mal.
add() Retorna um Big­De­ci­mal cujo valor é a soma de (this + Sumando).
divide() O valor da saída é obtido através de (this / Divisor).
max(Big­De­ci­mal val) Retorna o valor máximo deste Big­De­ci­mal.
min(Big­De­ci­mal val) Retorna o valor mínimo deste Big­De­ci­mal.
mo­ve­Poin­tLeft(int n) Retorna um Big­De­ci­mal com o ponto decimal deslocado para a esquerda pelo valor “n”.
mo­ve­Poin­tRight(int n) Retorna um Big­De­ci­mal com o ponto decimal deslocado para a direita pelo valor “n”.
multiply(Big­De­ci­mal mul­ti­pli­cando, Math­Con­text mc) Retorna um valor que resulta de (this * Mul­ti­pli­ca­dor).
Ir para o menu principal