Como o uso do log10 calcula corretamente o comprimento de um número inteiro? [fechadas]

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

Minha pergunta é essencialmente uma questão de matemática: POR QUE pegar o log10 () de um número, colocar esse número no piso, adicionar 1 e depois convertê-lo em um int calcula corretamente o comprimento do número?

Eu realmente quero saber a explicação matemática profunda, por favor!