Java BigDecimal

Java BigDecimal
O uso de formatos de dados de ponto flutuante nos cálculos financeiros é restrito devido à sua imprecisão. É por isso que Java tem uma classe especial chamada BigDecimal para reduzir esses problemas. O BigDecimal é de números inteiros de 32 bits para lidar com números de ponto flutuante que contêm grandes valores duplos e extremamente pequenos com precisão notável. A classe BigDecimal oferece métodos para manipulação, conversão de formato, hash, arredondamento, comparação e aritmética. Alguns métodos de classe de BigDecimal são implementados abaixo.

Exemplo 1:

BigDecimal é eficaz para representar um número de tamanho quase infinito. O BigDecimal detém os maiores valores flutuantes, enquanto o biginteger pega os grandes valores de números. O programa é implementado abaixo para mostrar a funcionalidade do BigDecimal em Java.

Primeiro incluímos os pacotes "bigdecimal" e "biginteger" dentro do programa Java. Então, declaramos o objeto de Biginteger como "Val1" e o objeto BigDecimal como "Val2". Atribuímos o valor inteiro longo ao objeto "Val1" da classe biginteger () e o valor do ponto flutuante para o objeto "Val2" da classe BigDecimal (). Depois disso, imprimimos os dois valores para realizar os resultados.

Os resultados dos valores biginteger e bigdecimal são executados da seguinte forma:

Exemplo 2:

BigDecimal apenas permite números inteiros de precisão arbitrária de números de ponto fixo. Vamos ter um programa Java onde as operações aritméticas são realizadas em dois números inteiros decimais significativos.

Definimos dois objetos BigDecimal que são rotulados como "num1" e "num2". Esses objetos bigdecimal são inicializados com grandes valores decimais. Em seguida, aplicamos a operação de adição, subtração e multiplicação nesses objetos usando os métodos Add (), subtração () e multiply (), respectivamente, respectivamente. Observe que o primeiro objeto "num1" de BigDecimal chamou o método e o segundo objeto "num2" passou como um argumento desse método.

Os seguintes resultados são realizados aplicando os métodos acima aos valores BigDecimal.

Exemplo 3:

A operação de comparação não pode ser realizada em valores BigDecimal usando os operadores de comparação. Como, BigDecimal é restrito a Tipos de dados int, longos e duplos. Java possui um método comparado () interno para comparar valores bigdecimal.

Temos um objeto BigDecimal "BIG1" e "BIG2" Declaração dentro do método Main () da classe Java especificada. Depois de declarar os objetos, definimos os valores decimais neles. Em seguida, usamos o bloco "if-else" aninhado para comparar o objeto BigDecimal usando o método compareto (). Se o objeto BigDecimal for igual, o zero será retornado e a declaração de impressão da seção "se" será executada. Caso contrário, o método compareto () retorna o valor "1" quando o bigdecimal contém valores diferentes. Verificamos os resultados de retorno do método compareto () para os valores decimais fornecidos na classe bigdecimal () via declaração if-else aninhada.

O valor do método compareto () é igual ao valor "1", que mostra que os números de flutuação passados ​​na classe BigDecimal () não são iguais. A mensagem de impressão "else-if" é exibida abaixo.

Exemplo 4:

Java tem outro bytevalueExact integrado BigDecimal para a conversão do BigDecimal em um byte enquanto procura qualquer dados perdidos. Este método lança uma aritmeticexception quando o bigdecimal tem uma parte fracionária que não é zero, ou se o resultado estiver além do intervalo que pode ser armazenado por um byte.

Utilizamos o método bytevalueExact () no programa acima. Para isso, declaramos a variável "bigdec" de BigDecimal. Em seguida, definimos uma variável "B" do tipo byte. Definimos o valor dentro da classe BigDecimal () que é inicializada dentro da variável "bigdec". Em seguida, invocamos o byteValueExact () na variável "B" para obter o valor de byte do valor BigDecimal. O valor de byte retornado deste método será impresso com a ajuda do método de impressão Java.

O valor do byte do método bytevalueExact () é o mesmo que o valor de entrada BigDecimal, porque o número não contém ponto decimal.

Exemplo 5:

Os valores máximos e mínimos dos valores BigDecimal especificados podem ser alcançados usando os métodos max () e min (), pois esses métodos são compatíveis com a classe BigDecimal.

Geramos três objetos BigDecimal como "B1", "B2" e "B3" para obter o valor mínimo e os valores máximos a partir desses. Juntamente com as declarações desses objetos, também criamos mais dois objetos "maxval1" e "maxval2". Primeiro, passamos os números bigdecimal para cada um dos objetos. Dentro do "maxval1", o objeto "B1" é chamado de método max () que leva o objeto "B2" como um parâmetro. Da mesma maneira, definimos o "maxvalue2", mas implantamos o método "min ()" para encontrar os valores mínimos entre "B1" e "B3". O método max () exibia o maior valor BigDecimal e o método min () exibia o menor valor BigDecimal.

O valor BigDecimal de "B2" contém o valor máximo em comparação com o "b1" que o método max () sai abaixo. O mesmo é o caso do método min () que exibe o valor BigDecimal "B3" porque possui um valor mínimo de "B1".

Exemplo 6:

O método Pow () de BigDecimal é usado para obter o valor de potência do valor BigDecimal fornecido. Um bigdecimal com o valor (este n) é devolvido do método Pow ().

Especificamos os objetos BigDecimal "BD1" e "BD2". No objeto "BD1", atribuímos o valor do BigDecimal, que contém o ponto decimal. Em seguida, aplicamos o método Pow () no objeto "BD1" dentro do objeto "BD2". O método Pow () é definido com o valor "3" que retorna o poder de "3" para o valor BigDecimal.

O valor BigDecimal aumentado ao poder "3" tem o seguinte valor:

Exemplo 7:

O último método BigDecimal implementado abaixo é chamado de escala (). É usado para obter o valor de escala do bigdecimal fornecido. A escala de um valor zero ou positivo é determinado pelo número de dígitos que são colocados à direita do ponto decimal. Quando um valor é negativo, o número não escalado é multiplicado pelo poder do valor “10” negação da negação de sua escala.

Damos um valor positivo de flutuação ao BigDecimal, que é inicializado na variável "deci1". Por outro. Em seguida, chamamos o método "Scale ()" para o objeto Deci1 e Deci2 dentro das variáveis ​​recém -declaradas "S1" e "S2" para obter a escala desses escalões.

O valor decimal no lado direito do BigDecimal positivo é "1", então a escala também é "1". A escala do BigDecimal negativo é "3".

Conclusão

Java BigDecimal é um método para representar com precisão o número. Os poucos métodos associados ao BigDecimal são explorados neste documento. BigDecimal impediria a escala diferente do valor duplo ao lidar com o dobro menor pode ser removido da soma devido à variação na escala. Esta é uma vantagem da classe BigDecimal, mas a desvantagem do BigDecimal é que ele torna mais complicado criar algoritmos.