How does using log10 correctly calculate the length of a integer? [closed]

浪尽此生 提交于 2020-01-22 14:39:46

问题


int length = (int) floor( log10 (float) number ) + 1;

My question is essentially a math question: WHY does taking the log10() of a number, flooring that number, adding 1, and then casting it into an int correctly calculate the length of number?

I really want to know the deep mathematical explanation please!


回答1:


For an integer number that has n digits, it's value is between 10^(n - 1)(included) and 10^n, and so log10(number) is between n - 1(included) and n. Then the function floor cuts down the fractional part, leaves the result as n - 1. Finally, adding 1 to it gives the number of digits.




回答2:


Consider that a four-digit number x is somewhere between 1000 <= x < 10000. Taking the log base 10 of all three components gives 3.000 <= log(x, 10) < 4.000. Taking the floor (or int) of each component and adding one gives 4 <= int(log(x, 10))+1 <= 4.

Ignoring round-off error, this gives you the number of digits in x.



来源:https://stackoverflow.com/questions/24176789/how-does-using-log10-correctly-calculate-the-length-of-a-integer

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!