Calculando uma resposta em Java com mais de 16 casas decimais
Eu escrevi um pequeno programa para calcular Pi em Java.
Meus summations estão atualmente digitadosdouble
.
Eu tenho duas saídas, uma que é Pi a 16 casas decimais (a saída bruta). A segunda saída é arredondada usandoNumberFormat
/DecimalFormat
para 3 a 5 casas decimais.
Eu passei um pouco pesquisando e navegando no Stackoverflow, mas como iniciante não tenho certezakeywords
que pode ser necessário para encontrar o método correto que estou procurando, então, por favor, desculpe minha ingenuidade ...
É possível calcular uma resposta (ou seja, Pi) para mais de 16 casas decimais? Diga, 32? Se sim, como posso abordar isso?
Eu olhei paraBigDecimal
No entanto, eu não acho que isso é o que eu estou depois, como todos os exemplos que eu já vi pré-definir o número com uma grande quantidade de casas decimais primeiro, não através de um cálculo, mas posso estar errado.
Compreendodouble
Os tipos de 64 bits não atingem mais de 16 casas decimais. Eu também entendo usandolong
como um tipo perderá precisão ...
Qualquer conselho ou orientação será apreciado.
Obrigado.
Atualizar
Infelizmente, ainda não estou recebendo mais de 16 casas decimais usando BigDecimals ... Estou indo na direção certa?
Atualizar novamente
Acabei de perceber que acho que meu problema é comscale
durante a minha divisão. Eu mudei para 100 e agora eu tenho Pi para 100 casas decimais ... Eu acho que oscale
parâmetro permite mais precisão, etc.divide(BigDecimal divisor, int scale, int roundingMode)
método. Veja o Java Doc>> aqui <<
Com 500.000 termos da série Madhava – Leibniz, agora posso calcular Pi para 10.000 casas decimais com 6 algarismos significativos “corretos”. O restante ainda está convergindo (e obviamente precisa de mais termos do 1000 para obter uma representação mais precisa do Pi). Mas para os propósitos do que a maioria de nós precisa de Pi, tudo bem.
Obrigado a todos pela vossa ajuda.