Hvorfor hævder Oracle, at java.util.Random.nextFloat() genererer 2^24 muligheder og ikke 2^23?
I intervallet [+0, 1) er der 127•2
23
værdier, der kan repræsenteres i float
, ikke 2
24
. Der er én for hver kombination af et eksponentkodningsfelt fra 0 til 126 inklusive, med hver værdi på 23 bit i significand-kodningsfeltet.
Hver værdi i formen m •2 −24 , med 0 ≤ m <2 24 , er repræsenteret. Den mindste ikke-nul værdi i denne form er 2 −24 , som er repræsenteret med en eksponentkode på 103 og en signifikanskode på 0. Den matematiske eksponent er koden, 103, minus bias, 127, som er lig med -24, og den matematiske signifikans er 1.
For enhver sådan m andet end nul, lad b være positionsnummeret på dens førende 1 bit (nummerering fra 0 for den lave bit). Derefter m •2
−24
er kodet i float
med en eksponentkode på b +103 og en signifikant kode på m •2
24− b
−2
24
. For m =0, den er kodet med alle nul bits.
Ingen af tallene i denne formular er subnormale.