Java BigDecimal: Exibir números de ponto flutuante com precisão

Ao fazer uso da classe BigDecimal em Java, você será capaz de processar complexos números de ponto flutuante com total exatidão em seus códigos. De sintaxe simples e padronizada, ela pode ser usada até mesmo por programadores iniciantes, em operações aritméticas que exigem alta precisão. Aplique a classe Java BigDecimal a diferentes métodos de cálculo para ampliar suas possibilidades.

O que é Java BigDecimal?

A classe BigDecimal em Java permite que números de ponto flutuante complexos, de tamanho teoricamente ilimitado, sejam representados e processados com total precisão. Ao ser combinada a diferentes métodos, ela permite a realização de operações de arredondamento, aritméticas, de conversão de formato, de hashing e comparações avançadas — tudo isso com a máxima exatidão.

Java BigDecimal é composta por dois elementos: uma escala de 32 bits e um valor inteiro sem escala com precisão arbitrária. Aqui, “escala” diz respeito ao inteiro que representa o número de casas decimais à direita do ponto decimal, desde que maior ou igual a zero — se for menor que zero, o valor é multiplicado por 10^(-scale). Ela, portanto, controla a precisão decimal do respectivo número. Em teoria, o tamanho de uma classe BigDecimal em Java será sempre limitado pela memória do computador. A possibilidade é, contudo, bastante remota, uma vez que é improvável que um código crie um número capaz de extrapolar a capacidade de um dispositivo. Importante ressaltar também que a classe Java BigDecimal foi especialmente projetada para lidar com números de ponto flutuante. Para processar números inteiros, você deverá utilizar a classe BigInteger em Java.

Hospedagem web com consultor pessoal

Rápido e escalável, confie na hospedagem da IONOS, que inclui domínio grátis no primeiro ano e endereço de e-mail!

  • Domínio
  • SSL Wildcard
  • Suporte 24 horas

Para que serve a classe Java BigDecimal?

Devido à extrema precisão dela, a classe BigDecimal em Java pode não ser interessante para grande parte das situações. Contudo, ela é muito bem quista em campos de aplicação específicos, como, por exemplo, em transações de e-commerce, em que até mesmo a menor casa decimal causa algum tipo de impacto nos cálculos. Java BigDecimal também costuma ser usada em análises estáticas precisas. Ainda, programas de controle de navegação de aviões e foguetes dependem da aplicação dessa classe, assim como diferentes áreas da medicina. Muitos outros campos, não especificados aqui, também podem se beneficiar dessa classe em Java, por ser capaz de apresentar resultados com os maiores índices de exatidão.

Como criar um objeto na classe Java BigDecimal?

Para que você consiga aplicar a classe BigDecimal em Java, primeiramente deverá importar essa classe para Java. Depois de concluir esse passo, você poderá declarar um objeto dessa classe, criar o valor desejado como argumento e transmiti-lo ao construtor Java da sua preferência. Somente depois de realizar todo esse procedimento, você será capaz de fazer uso da classe Java BigDecimal no seu código. Ela suporta diferentes métodos, que serão apresentados e explicados mais à frente.

Como já orientado, comece, antes de tudo, importando a classe Java BigDecimal e declarando seus objetos. Abaixo, declaramos dois objetos de exemplo:

/ / O seu programa Java para a classe BigDecimal:
import java.math.BigDecimal;
public class BigDecimalExemplo
{
	public static void main(String[] args)
	{
		/ / Criar dois novos BigDecimal:
		BigDecimal ExemploUm =
			new BigDecimal ("1275936001.744297361");
		BigDecimal ExemploDois =
			new BigDecimal ("4746691047.132719503");
	}
}
java

A partir daqui, já podemos usar esses objetos em conjunto com os métodos suportados pela classe.

Exemplos de aplicação de Java BigDecimal

Depois de criar os devidos objetos, você poderá combiná-los a diferentes métodos para a realização de operações. Nos próximos parágrafos, apresentaremos alguns exemplos simples que fazem uso da classe BigDecimal em Java e exibiremos os resultados obtidos. Para realizarmos essas ações, utilizaremos também o comando Java System.out.println().

Somar valores

Quando você quiser somar duas classes BigDecimal em Java, considere usar o método add(). Antes, você deverá fornecer os dois valores que deseja somar. No nosso exemplo, comandamos que o valor “ExemploUm” seja somado ao valor “ExemploDois”. A ação é executada da seguinte forma:

ExemploUm =
ExemploUm.add(ExemploDois);
System.out.println ("O resultado desejado após a adição é: " + ExemploUm);
java

Subtrair valores

Para subtrair dois valores, faça uso do do método subtract() com a classe Java BigDecimal. No próximo exemplo, diminuiremos “ExemploUm” de “ExemploDois”, escrevendo o seguinte código:

ExemploUm =
ExemploUm.subtract(ExemploDois);
System.out.println ("O resultado desejado após a subtração é: " + ExemploUm - ExemploDois);
java

Multiplicar valores

O método para a realização de uma multiplicação entre duas classes Java BigDecimal funciona da mesma forma que os já apresentados. Digite multiply() e utilize o objeto multiplier como argumento. Para multiplicarmos “ExemploDois” por “ExemploUm”, utilizamos o seguinte código:

ExemploUm =
ExemploUm.multiply(ExemploDois);
System.out.println ("O resultado desejado após a multiplicação é: " + ExemploUm);
java

Dividir valores

Se você tiver de dividir duas classes BigDecimal em Java, faça uso do método divide(). Basicamente, ele também segue a mesma sintaxe dos demais cálculos, tendo ela a seguinte aparência:

ExemploUm =
ExemploUm.divide(ExemploDois);
System.out.println ("O resultado esperado após a divisão é: " + ExemploUm);
java

Atente-se ao fato de que esse tipo de operação só funcionará se o resultado vir a ser exato ou um número inteiro. Não sendo esse o caso, a seguinte mensagem de erro será exibida após a execução do seu código:

java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
java

A mensagem de erro acima aponta um erro de tempo de execução. Para evitá-lo, você poderá usar uma das várias opções de arredondamento suportadas pelo método divide(). Faça isso por meio de java.math.RoundingMode em combinação com uma das seguintes constantes:

Constante Função
CEILING Arredonda para cima (em direção ao infinito positivo).
DOWN Arredonda para 0.
FLOOR Arredonda para baixo (em direção ao infinito negativo).
HALF_DOWN Arredonda para o número mais próximo e oposto ao zero, se ambos estiverem igualmente distantes.
HALF_EVEN Arredonda para o número mais próximo e para o número par mais próximo, se ambos estiverem igualmente distantes.
HALF_UP Arredonda para o número mais próximo e em direção a 0, se ambos estiverem igualmente distantes.
UNNECESSARY Dispensa o arredondamento e realiza operações exclusivamente exatas; essa constante só pode ser usada quando a divisão é exata.
UP Arredonda para um número distante de 0.

Principais métodos de Java BigDecimal

Para que você possa se beneficiar ainda mais dos cálculos realizados pela classe Java BigDecimal, listamos aqui os principais métodos que podem ser associados a ela, assim como a função que cada um executa:

Método Função
abs() BigDecimal com o valor absoluto deste BigDecimal.
add() Retorna um BigDecimal com o valor resultante de (this + adendo).
divide() O valor resultante é determinado por (this / divisor).
max(BigDecimal val) Retorna o valor máximo deste BigDecimal.
min(BigDecimal val) Retorna o valor mínimo deste BigDecimal.
movePointLeft(int n) Retorna um BigDecimal com a vírgula decimal movida para a esquerda em “n” casas.
movePointRight(int n) Retorna um BigDecimal com a vírgula decimal movida para a direita em “n” casas.
multiply(BigDecimal multiplicand, MathContext mc) Retorna um valor que resulta de (this * multiplicador).
Dica

Aprenda mais sobre a linguagem de programação Java, uma das mais populares e utilizadas no mundo. Artigos especializados do nosso Digital Guide apresentam a você os principais operadores Java, assim como explicam as cruciais diferenças entre Java e JavaScript e entre Java e Python.

Este artigo foi útil?
Para melhorar a sua experiência, este site usa cookies. Ao acessar o nosso site, você concorda com nosso uso de cookies. Mais informações
Page top