Java double
s sont dans la norme IEEE-754 format, donc ils ont un 52 bits fraction; entre deux adjacents puissances de deux (inclusive et exclusive de la suivante), il y aura donc 2 à la 52ème édition de puissance différente double
s (c'est à dire, 4503599627370496 d'entre eux). Par exemple, c'est le nombre de distinct double
s compris entre 0,5 et 1,0 exclus, et exactement ce que beaucoup de se trouvent également entre 1.0 inclus et 2.0 exclus, et ainsi de suite.
Le comptage de l' doubles
entre 0.0 et 1.0 est plus difficile que de le faire entre les puissances de deux, parce qu'il y a beaucoup de puissances de deux inclus dans cette gamme, et, aussi, l'on obtient dans les questions épineuses de les nombres dénormalisés. 10 de 11 bits des représentants de couvrir toute la gamme en question, donc, y compris les nombres dénormalisés (et je pense que quelques types d' NaN
), vous avez de 1024 fois l' double
s en tant que laïcs, entre les puissances de deux -- pas plus que 2**62
au total, de toute façon. À l'exclusion de dénormalisée &c, je crois que le compte serait 1023 fois 2**52
.
Pour une gamme arbitraire comme "100 100.1" il est encore plus difficile parce que la limite supérieure ne peut pas être représentée exactement comme un double
(n'étant pas un multiple exact de la toute puissance de deux). Pratique approximation, puisque la progression entre les puissances de deux est linéaire, on peut dire que a dit de la gamme est 0.1 / 64
th de la durée entre les puissances de deux (64 et 128), de sorte que vous vous attendez à propos de
(0.1 / 64) * 2**52
distinctes double
s -- qui vient à l' 7036874417766.4004
... donner ou de prendre un ou deux;-).