Capacidade entre long e double já que ambos são 64bits

Bom sei que int e float tem 32bits e long e double tem 64bits e que para saber a quantidade de bytes é 2 ^31 -1 ou 63-1 para ter tudo.

Mas quando eu estava fazendo um exercício de fibo o double funcionou e o long começou a zerar apartir de 65! e o double chegou a 100! só que negativo.
Agora não lembro ou nem sei mesmo :oops: , mas o pq o double consegue chegar a 100 e float não, esquece o porque dodouble depois de uma quantidade ele vira negativo.

Grato.

O double consegue números maiores do que o long… só que com perda de precisão…

Vou tentar explicar mais ou menos…aqui como funciona

O long… é um tipo inteiro… entao vc tem os numeros 1, 2, 3, 4, 5 e assim por diante até chegar no número máximo… um por um…

No double… o que vc tem é uma exponenciação… com mantissa e expoente… o numero double é um número calculado…

Por exemplo o número: 12… para representar ele em double teriamos a mantissa 12 e o expoente 0… e a matemática seria 12 * 10 (elevado a 0) que resultaria em 12

Agora o número: 135,66 Mantissa 13566 Expoente… -2… 13566 * 10 (elevado a -2) que resultaria em 135,66

Um número gigantesco 1992883000000000000,01 Esse número teria que caber todo na mantissa para ser representado corretamente… só que nao cabe… entao a mantissa fica com 1992883 e o expoente com 12

19992883 * 10 (elevado a 12) que resulta em: 1992883000000000000 (sem as casas decimais mesmo)

O double conseguiu guardar um número grande… só que perdeu em precisão…

Mais ou menos essa é a ideia

Por isso esses números são chamados de Floating Point…

O ponto que separa as casas decimais flutua, ou seja, não tem local fixo… tudo depende do valor do expoente…

E por causa dessa perda de precisão, não se deve utilizar tipos de dados ponto flutuante para valores monetários… e sim tipos inteiros…

Entenda a faixa dos primitivos lendo isso aqui.

Boa sorte!

Agora relembrei e entende mais ainda.

E obrigado rogelgarcia por ter dado esta esplicação e mspereira por ter me lembrado deste link do doc da sun onde tive outra dica além de ver o padrão IEE754

onde encontrei este link, não li tudo,mas da uma boa explicação:

http://www.lia.ufc.br/~valdisio/download/ieee.pdf

:smiley: :smiley: :smiley: