Ya vimos en el artículo dígitos de un número cómo podemos saber cuántos dígitos contiene un número. Para ello utilizábamos un bucle y una división sobre el número. En este caso vamos a utilizar el logaritmo en base 10 para poder realizar lo mismo y así poder calcular los dígitos de un número con logaritmos.
Lo que tenemos que saber es que el logaritmo en base 10 lo que nos indica el exponente al que hay que elevar 10 para que se pueda obtener el número.
Así:
- Log (10) es 1. Es decir, si elevas 101 será igual a 10.
- Log (100) es 2. Es decir, si elevas 102 será igual a 100.
- Log (1000) es 3. Es deci, si elevas 102 será igual a 1000.
De esta manera podemos ver que el valor del resultado de un logaritmo en base 10 sobre un número corresponde a los dígitos del número menos 1. Así que deberemos de aplicar el logaritmo en base a 10 para un número y sumarle 1.
En el caso de que el número nos ofrezca decimales lo que haremos será quedarnos con la parte entera.
Así:
- Log(20) es 1,3. Por lo que nos quedamos con la parte entera, es decir, 1.
- Log(300) es 2,47. Por lo que nos quedamos con la parte entera, es decir, 2.
Si pasamos codificar nuestro cálculo de dígitos de un número con logaritmos en Java tenemos que saber varias cosas. Por un lado que para poder calcular un logaritmo en base 10 utilizaremos el método Math.log10()
y que haremos un cast sobre el número decimal mediante la sentencia (int)
.
De esta forma nos quedará una simple línea de código:
int length = (int) (Math.log10(iNumero) + 1);
Vemos que al número devuelto por el logaritmo en base 10 le aplicamos el cast para quedarnos con la parte enter y que le sumamos una unidad.
El código completo nos quedaría de la siguiente forma:
int iNumero = 1234589; int length = (int) (Math.log10(iNumero) + 1); System.out.println("El número " + iNumero + " cuenta con " + length + " dígitos");
Ya hemos visto lo sencillo que es realizar nuestro cálculo de dígitos de un número con logaritmos en Java.