Saltar al contenido

Obtener número de dígitos con JavaScript

Ángel, miembro de este equipo de trabajo, nos hizo el favor de redactar este tutorial ya que domina perfectamente este tema.

Solución:

length es una propiedad, no un método. No puede llamarlo, por lo tanto, no necesita paréntesis. ():

function getlength(number) 
    return number.toString().length;

ACTUALIZAR: Como se discutió en los comentarios, el ejemplo anterior no funcionará para números flotantes. Para que funcione, podemos deshacernos de un punto con String(number).replace('.', '').lengtho cuente los dígitos con la expresión regular: String(number).match(/d/g).length.

En términos de velocidad, potencialmente la forma más rápida de obtener el número de dígitos en el número dado es hacerlo matemáticamente. Para enteros positivos hay un maravilloso algoritmo con log10:

var length = Math.log(number) * Math.LOG10E + 1 | 0;  // for positive integers

Para todos los tipos de números enteros (incluidos los negativos), existe una solución optimizada brillante de @ Mwr247, pero tenga cuidado al usar Math.log10, ya que no es compatible con muchos navegadores heredados. Entonces reemplazando Math.log10(x) con Math.log(x) * Math.LOG10E resolverá el problema de compatibilidad.

Crear soluciones matemáticas rápidas para números decimales no será fácil debido al conocido comportamiento de las matemáticas de punto flotante, por lo que convertir astring enfoque será más fácil e infalible. Como mencionó @streetlogics, la transmisión rápida se puede hacer con un número simple para string concatenación, liderando el reemplazar solución a ser transformada en:

var length = (number + '').replace('.', '').length;  // for floats

Aquí hay una respuesta matemática (también funciona para números negativos):

function numDigits(x) 
  return Math.max(Math.floor(Math.log10(Math.abs(x))), 0) + 1;

Y una versión optimizada de lo anterior (operaciones bit a bit más eficientes):

function numDigits(x) 
  return (Math.log10((x ^ (x >> 31)) - (x >> 31)) 

Esencialmente, comenzamos obteniendo el valor absoluto de la entrada para permitir que los valores negativos funcionen correctamente. Luego ejecutamos la operación log10 para darnos qué potencia de 10 es la entrada (si estuviera trabajando en otra base, usaría el logaritmo para esa base), que es el número de dígitos. Luego bajamos la salida para tomar solo la parte entera de eso. Finalmente, usamos la función max para fijar valores decimales (cualquier valor fraccionario entre 0 y 1 solo devuelve 1, en lugar de un número negativo) y agregamos 1 a la salida final para obtener el conteo.

Lo anterior asume (según su entrada de ejemplo) que desea contar la cantidad de dígitos en números enteros (por lo tanto, 12345 = 5 y, por lo tanto, 12345.678 = 5 también). Si desea contar el número total de dígitos en el valor (por lo tanto, 12345.678 = 8), agregue esto antes del ‘retorno’ en cualquiera de las funciones anteriores:

x = Number(String(x).replace(/[^0-9]/g, ''));

Dado que esto apareció en una búsqueda en Google de “javascript obtener número de dígitos”, quería decir que existe una alternativa más corta que se basa en la conversión interna que se realizará por usted:

var int_number = 254;
var int_length = (''+int_number).length;

var dec_number = 2.12;
var dec_length = (''+dec_number).length;

console.log(int_length, dec_length);

rendimientos

3 4

valoraciones y reseñas

Si te ha sido útil nuestro artículo, nos gustaría que lo compartas con más seniors de esta manera contrubuyes a difundir esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *