[Math] Estimate or calculate the number of digits of a multiplication

elementary-number-theory

I would like to calculate the number of digits of these multiplications

2 x 4

200 x 300

2 (12321) (1000).

I don't exactly know how to start. Of course I know that I can multiply the numbers and count the digits,

2 x 4 = 8 (1 digit)

200 x 300 = 60,000 (5 digits)

2 (12321) (1000) = 24,642,008 (8 digits).

But If the numbers are very large, it would be difficult to make this procedure, so I was maybe looking for another way (This is why I asked myself the question in the first place).

Best Answer

You can take log10 of each of the numbers being multipled, sum them, floor them, then add one to get the number of digits.

i.e. In your last example of 2*12321*1000, which is actually equal to 24642000 (you missed a 0, so it has 8 digits).

Number of Digits = $\lfloor log_{10}(2) + log_{10}(12321) + log_{10}(1000) \rfloor +1 = 8 \\ =\lfloor log_{10}(2*12321*1000) \rfloor +1$


I'll begin explaining why this works with a simple observation: You can calculate the number of any power of 10 by simply taking the base-10 logarithm of it, and adding one.

For example $log_{10}1=log_{10}10^0=0$.

$log_{10}10^2 = log_{10}100=2$, etc.

So by adding one to each of these two examples above, we get the correct number of digits. This is just an artifact of the fact that we use base-10 to count. If we counted in base-2, we'd take log2, then add one.


Now, why do we have to floor the number and add one for any general number?

The number 12321 can be thought of as $12321 = 10^4 * 1.2321$, and since it has the same number of digits as $10^4$, the extra $*1.2321$ term should be "ignored" somehow.

Since multiplications in normal space become addition after you take the logarithm, we get:

$log_{10}12321 = log_{10}(10^4*1.2321) = log_{10}10^4 + log_{10}1.2321 \\ =4+log_{10}1.2321$

Since we chose to round down to the nearest power of 10, the number we multiply $10^i$ by will always be in the interval $[1,10)$, and any number in this interval will have satisfy $0<log_{10}r<1$ - so the reason we floor it is just to remove this "remainder".

The final step is just to add one, as I explained above.