I will assume single precision floats.
We got the zero, which although can be represented as negative zero, is still just zero as an integer so I count it as one.
Numbers with exponent less than 127 are not integers.
Exponent Free bits # Numbers
127 0 1
128 1 2
129 2 4
...
149 22 2^22
These sum up to 2^23-1
. If exponent is greater than 149, all the numbers are integers. So that's an additional 105*2^23
numbers (exponent 255 is reserved). All of these come in positive and negative.
The grand total is thus
1 + ((2^23 - 1) + 105 * (2^23)) * 2 = 1778384895
So looks like you were right. Nice question, it looked a lot easier at first sight :)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…