flotteur : 32 bits (4 octets) où 23 bits sont utilisés pour la mantisse (environ 7 chiffres après la virgule). 8 bits sont utilisés pour l'exposant, de sorte qu'un flottant peut "déplacer" le point décimal vers la droite ou vers la gauche en utilisant ces 8 bits. Cela permet d'éviter de stocker de nombreux zéros dans la mantisse, comme dans 0,0000003 (3 × 10 -7 ) ou 3000000 (3 × 10 7 ). Un bit est utilisé comme bit de signe.
double : 64 bits (8 octets) où 52 bits sont utilisés pour la mantisse (environ 16 chiffres décimaux). 11 bits sont utilisés pour l'exposant et 1 bit est le bit de signe.
Puisque nous utilisons le binaire (uniquement 0 et 1), un bit de la mantisse est implicitement à 1 (le float et le double utilisent tous deux cette astuce) lorsque le nombre n'est pas nul.
De plus, comme tout est en binaire (mantisse et exposants), les conversions en nombres décimaux ne sont généralement pas exactes. Des nombres comme 0,5, 0,25, 0,75, 0,125 sont stockés exactement, mais pas 0,1. Comme d'autres l'ont dit, si vous devez stocker des cents avec précision, n'utilisez pas float ou double, mais int, long, BigInteger ou BigDecimal.
Sources :
http://en.wikipedia.org/wiki/Floating_point#IEEE_754:_floating_point_in_modern_computers
http://en.wikipedia.org/wiki/Binary64
http://en.wikipedia.org/wiki/Binary32