Como eu faria cálculos com números extremamente grandes em Java?
Eu tentei, long
mas isso atinge o máximo em 9223372036854775807 e, ao usar um número inteiro, não salva dígitos suficientes e, portanto, não é preciso o suficiente para o que preciso.
Existe alguma maneira de contornar isso?
java
numbers
integer
biginteger
Petey B
fonte
fonte
9223372036854775807
é o valor exato deLong.MAX_VALUE
, de qualquer maneira.Respostas:
Você pode usar a
BigInteger
classe para inteiros eBigDecimal
para números com dígitos decimais. Ambas as classes são definidas nojava.math
pacote.Exemplo:
fonte
Use a
BigInteger
classe que faz parte da biblioteca Java.http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigInteger.html
fonte
Aqui está um exemplo que obtém grandes números muito rapidamente.
fonte
Check
BigDecimal
- out eBigInteger
.fonte
fonte
Dependendo do que você está fazendo, você pode querer dar uma olhada no GMP (gmplib.org), que é uma biblioteca de precisão múltipla de alto desempenho. Para usá-lo em Java, você precisa de wrappers JNI em torno da biblioteca binária.
Veja parte do código do Alioth Shootout para obter um exemplo de como usá-lo em vez de BigInteger para calcular Pi para um número arbitrário de dígitos.
https://benchmarksgame-team.pages.debian.net/benchmarksgame/program/pidigits-java-2.html
fonte