Because the value in cell B1 may appear to be 5, but it is actually kept internally as 4.99999999999989 - and that number has 16 characters when evaluated as a string by LEN - =LEN(B1) returns 16. ().
You may observe this for yourself by pressing the "Increase Decimal" button several times:
The display ultimately gets to the point where it has enough decimal places to indicate the underlying value (the LEN function ignores trailing zeroes - again, those are display zeroes not stored zeroes).
You may achieve the same result by typing the following formula into a cell:
This actually has 19 characters in it, not 16, because we have not multiplied by 1,000: