If n is 123, count will end up as 3, which would be correct. There are three
digits. If n is 100, count will end up as 2, which is not the correct number of
digits. The loop condition should actually be. While temp is greater than or
equal to 10. We can see this by hand tracing the code. The values I'm
interested in are count and temp. If n starts out as 123, then count will start
as 1, temp will start as 123. Temp is greater than 10, so we increment count.
And divide temp by 10 and divide temp by 10.0 which will give us 12.3. Now, we
go back to the loop condition. Temp is still greater then 10 so we increment
the count and then divide temp by 10.0 again so we have 1.23. Now, when we
check again, temp is less than 10. So we skip to the end, and we're done. But
what would happen if n was 100? Count would start as 1, the way it did before.
And temp would start as 100. Temp is greater than 10, so we would increment
count and then divide temp by 10.0. So we would have 10. And then check the
condition again. But this time, 10 is not greater than 10. It's equal, so it
skips out immediately. When in fact, we still had two digits left. We needed to
increment count again. This is why the condition should be temp is greater than
or equal to 10.