BigInteger/BigDecimal tem tamanho infinito? Arredonda números altos?
9 respostas
A
alexcostars
Pessoal, se eu fizer a conta em BigDecimal (exemplo):
999 quinquilhões * 998 quinquilhões * 700 quinquilões, vai dar o número real (sem arredondamento e do tamanho que deve ser) ou vai dar arredondado?
Outra pergunta
Se eu pedir para o BigDecimal calcular o PI (355/113), qual é o máximo de caracteres que ele calcula? (desculpe por não testar, estou num PC bem velho, com 256MB de RAM :D)
Se eu não me engano o tamanho do BigInteger não pode exceder um número com 2.147.483.648 de casas decimais.
A
andeb
BigDecimal vocês quis dizer?
C
clone_zealot
O BigInteger guarda o seu valor num array de int, e como os vetores em Java não passando do valor Integer.MAX_VALUE, então podemos concluir que o maior número possível de ser guardado num BigInteger é um número com um pouco mais de 4 bilhões de casas.
E como o BigDecimal é uma representação que guarda a posição da casa decimal em um BigInteger(ou seja, ele tem um BigInteger pra guardar o seu valor), ele também vai guardar no máximo o tamanho de um vetor.
M
marcobiscaro2112
Se é até Integer.MAX_VALUE (na verdade um a mais pois Java é zero-indexed) então tem, no máximo 2.147.483.648 (pouco mais de 2 bilhões e 147 milhões de casas, como disse o ViniGodoy) e não mais de 4 bilhões.
E
entanglement
De qualquer maneira, a aproximação que você propôs para pi ( 355/113 ) é uma dízima periódica com período 112.
Nem se estressa com esse negócio do PI, não quero calcula ele não, foi só a primeira fração com resultado grande que me veio a cabeça para o exemplo
Só uma dúvida, vc está querendo dizer que o valor
E atualmente, a maior aproximação que se conseguiu fazer de PI foi realizada por Fabrice Bellard (com 2699999990000 dígitos, que leveram 131 dias para serem computados).