Java – Trabalhando com precisão numérica

9 12 2013

Problema

Como trabalhar com precisão numérica em JAVA

Solução

  • Dê preferencia utilizar BigDecimal, uma vez que pode ser manipulado com precisões estipuladas
  • Dê preferencia por utilizar o construtor em String, assim como o proprio javadoc do Big Decimal recomanda

“The String constructor, on the other hand, is perfectly predictable: writing new BigDecimal(“0.1”) creates a BigDecimal which is exactly equal to 0.1, as one would expect. Therefore, it is generally recommended that the String constructor be used in preference to this one. “

Exemplo

Exemplo precisão de 4 casa decimais:

0.50012323 + 0.50012323 + 1.50012323 = 2.5004

Abaixo segue uma implementação bem simples de uma solução:

public static void main(final String[] args) {
        String somaA = "0.50012323";
        String somaB = "0.50012323";
        String somaC = "1.50012323";
        BigDecimal soma = new BigDecimal(somaA)
                          .add(new BigDecimal(somaB))
                          .add(new BigDecimal(somaC))
                          .setScale(4, RoundingMode.CEILING);
        System.out.println("SOMA = " + soma);
    }

Acredito que o ideal é sempre criar uma classe especializada para isso, tipo Dinheiro.java e encapsular toda essa rega lá dentro com vários testes unitários garantindo a precisão necessária e centralizado a implementação 😉

 

Referências: AQUI e AQUI

Anúncios

Ações

Information

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: