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.