the issue is floating is significant digits X base to a power. in school you might have learned scientific notation:
3.345 * 10^9 = 3345000000
you may remember doing really large numbers (high exponent) but only worrying about a low significant digits (probably under 5).
when stored in a computer there are fixed number of digits. some are allocated to the decimal with an implied decimal point and some to the exponent. if we allocated 10 digits we can say have 8 significant digits and 2 digits for exponents (we would need an extra bit for a negative indicator). so with system 100,000,001 wild round to 1.0 x 10^8.
in computers instead of radix (base) 10, we use radix 2. and unlike scientific notation, where we use one whole number, in computer there is no whole. so 1 = .1 x 10^1
a small int (16 bits) can hold a value between -32768 and 32767. you get a full 4 digits of precision, but can store some 5 digit precision digits.
with a float we use a total of 32 bits. one bit is used to indicate positive or negative number. 23 bits are the decimal number, and 8 bits (which includes a sign bit) are the exponent.
full details: