tutz

Conversion a números en JavaScript

Hay tres maneras de convertir un valor no numérico a un numero.

  • Number(): Se puede usar en cualquier tipo de dato.
  • parseInt(): Sirve para convertir de cadena a entero.
  • parseFloat(): Sirve para convertir de cadena a número flotante.
  • Cada una de estas funciones reaccionan diferente al mismo input.

    Función Number()

    La función Number() realiza conversiones de acuerdo a esta regla.

  • Para valores booleanos, convierte true en 1 y false en 0.
  • Number(true); // 1
    Number(false); // 0
  • Para valores númericos lo único que hace es devolver el mismo valor que recibe.
  • Number(13); // 13
  • Para null retorna 0.
  • Number(null); // 0
  • Para undefined retorna NaN.
  • Number(undefined); // NaN
  • Para cadenas usa las siguientes reglas.
    • Si la cadena contiene solo caracteres numéricos, opcionalmente precedido por un signo mas (+) o menos (-), la función siempre convertirá a un número.
    • Number('12'); // 12
      Number('+12'); // 12
      Number('-12'); // -12
      Number('000012'); // 12 (Omite los ceros delante del número)
    • Si la cadena contiene un valor flotante valido, entonces lo convertirá en su respectivo valor flotante númerico.
    • Number('4.2'); // 4.2
    • Si la cadena contiene un numero hexadecimal valido, entonces retornará un entero que marque el valor hexadecimal.
    • Number('0xf'); // 15
    • Si la cadena es vacia entonces retornará 0
    • Number(''); // 0
    • Si la cadena contiene otro formato diferente a los ya comentados, entonces retornará NaN.
    • Number('Hola :)'); // NaN
  • ParseInt()

    Esta función examina la cadena mucho más de cerca para ver si coincide con un patrón númerico.

    Funciona un poco diferente a Number(), miremos aquí sus reglas:

  • Los espacios en blanco iniciales de la cadena son ignorados hasta que se encuentre el primer carácter que no es un espacio en blanco.
  • Si el primer carácter no es un número, signo + o -, entonces siempre retornará NaN.
  • Si el primer carácter es un número, signo + o -, entonces la conversión continua al segundo carácter y asi sucesivamente hasta que encuentre un valor no númerico o termine la cadena.
  • Aquí algunos ejemplos que te ayudarán a clarificar como usar esta función.

    parseInt('123'); // 123
    parseInt('12.3'); // 12
    parseInt('12.99'); // 12
    parseInt('    22'); // 22
    parseInt(' '); // NaN
    parseInt('456aaa'); // 456
    parseInt('aaa456'); // NaN
    parseInt('+789'); // 789
    parseInt('-789'); // -789
    parseInt('  -98'); // -98

    ParseFloat()

    Es similar a ParseInt(), la única diferencia es que toma en cuenta el carácter punto (.) para continuar convirtiendo o no.

    Ejemplos de uso:

    parseFloat('1.2'); // 1.2
    parseFloat('   1.2'); // 1.2
    parseFloat('1.2.2'); // 1.2
    parseFloat('00004.5'); // 4.5
    parseFloat('0'); // 0

    De esta manera tienes tres formas de convertir a números en JavaScript, si tienes dudas o comentarios no dudes en escribirnos a @tutz_tv en Twitter.