Apuntes JavaScript – Number

En este apartado vamos a analizar los principales métodos relacionados con el objeto primitivo Number.

El objeto Number permite representar y manipular valores numéricos, otro tipo de valores pueden ser convertidos a número mediante la función Number().

¿Cómo se construye una instancia de Number?

Para construir un objeto Number, podemos hacerlo del siguiente la instrucción new Number(value);

let a = new Number(123)

Si no incluimos el new esta variable almacenaría un valor numérico, pero no del tipo Number.

Principales usos de Number

El objeto Number es utilizado:

  • Si el argumento no puede ser convertido a un número, devolviendo NaN (Not a Number).
  • Realizar una conversión de tipo a un contexto no numérico mediante Number (sin el operador new, similar a un casting).

Propiedades de Number

Destacamos:

Number.NaN
Es un valor especial que indica “No es un número” Not a Number
Number.MAX_VALUE
Número más grande representable 1.7976931348623157e+308

  • Number.EPSILON
    Se corresponde al menor número representable entre dos números, y se trata de 2.220446049250313e-16
  • Number.MAX_SAFE_INTERGER
    Se trata del mayor número que es seguro para su trabajo en JavaScript. (9007199254740991)
  • Number.MIN_SAFE_INTEGER
    Es el menor número que es seguro representar en JavaScript, coincide con el mismo número pero en negativo. -9007199254740991
  • Number.MAX_VALUE
    Número más grande representable 1.7976931348623157e+308
  • Number.MIN_VALUE
    Se trata del valor más pequeño representable aproximándose a 0, pero sin llegar a él, cualquier número menor será considerado 0 en JavaScript (5e-324)
  • Number.NaN
    Es un valor especial que indica “No es un número” Not a Number
  • Number.NEGATIVE_INFINITY
    Se trata de un valor que representa el infinito negativo, usado en el retorno de un desborde de pila overflow.
  • Number.POSITIVE_INFINITY
    Se trata de un valor que representa el infinito positivo, usado en el retorno de un desborde de pila overflow.
  • Number.prototype
    Permite adicionar propiedades a un objeto Number.

Métodos de Number

Number.isNaN();
Determina si el valor que tiene el valor analizado es NaN

Number.isFinite()
Determina si el valor es un número finito

Number.isInteger()
Devuelve true o false si el número es entero.

Number.isSafeInteger()
Evalúa si el número pasado es un entero seguro (entre -9007199254740991 y 9007199254740991)

Number.parseFloat()
Realiza la conversión de un tipo cadena a un número de decimal.

Number.parseInt()
Realiza la conversión de un tipo cadena a un número entero.

Number.prototype

Además de estos métodos, los objetos Number heredan de Number.prototype, estos son otros métodos de los que dispone:

Number.prototype.toExponential()
Devuelve una cadena que representa el número en notación exponencial

Number.prototype.toFixed()
Devuelve una cadena que representa el número en notación de punto fijo, representada con el número de decimales indicado entre paréntesis.

Number.prototype.toLocaleString()
Crea una cadena con una representación sensible al idioma del número señalado. Es utilizado para evitar la notación científica.

Si no indicamos ninguna especificación entre los paréntesis, cogerá por defecto el idioma de nuestro navegador. En estos casos hemos utilizado la nomenclatura, respectivamente, arabe, español, alemán, chino y después hemos probado cómo evita la notación científica.

Number.prototype.toPrecision()
Devuelve una cadena que representa un objeto Number con la precisión especificada, es decir, desde el número significativo colocado más a la izquierda, tantos dígitos (en total) como pidamos.

Si no recibe ninguna especificación de parámetros, se comporta como el método toString().

Number.prototype.toString()
Devuelve una cadena que representa al objeto Number especificado.

Diferencia entre Number() y parseInt()

Si queremos realizar un casting con Number() o convertir un valor con parseInt, debemos saber que ambas opciones suelen devolver un valor similar, sin embargo, hay unos pequeños matices cuando el valor que se intenta convertir no es numérico.

Como vemos, en el caso de que la cadena tenga valores numéricos y no numéricos, si el casting lo hacemos mediante Number(), el resultado que nos devuelve es NaN, sin embargo, parseInt() analiza la cadena hasta llegar al primer dígito no numérico, y al hacerlo, devuelve lo que tenga almacenado.

Diferencia entre Number y number

El funcionamiento entre un valor number y una instancia del objeto Number es muy similar, funcionando este último como un envoltorio.

Tenemos que tener en cuenta que si comparamos el valor de una instancia Number con un number, el resultado variará dependiendo si utilizamos == ó ===