Comprobar Números Javascript

Logo Javascript

Para poder comprobar números Javascript el objeto Number nos proporciona un conjunto de métodos que nos permitirán trabajar con la variables y ver si la información que estas albergan es información numérica.

Comprobar si es un número

Lo primero para lo que podemos utilizar el objeto Number es para saber si lo que estamos manipulando es o no un número. Ya que recordemos que en Javascript no se realiza tipado de los datos, si no que se van tipando dinámicamente.

Primero podemos comprobar si una variable no tiene asignado un valor NaN mediante la constante Number.NaN o bien validarlo mediante el método Number.isNaN().

let numero = 12;
let decimal = 12.4;
let obj_numero = new Number(12);
let cadena = 'Soy una cadena';
let sin_numero = NaN;

console.log(Number.isNaN(numero));     // false
console.log(Number.isNaN(decimal));    // false
console.log(Number.isNaN(obj_numero)); // false
console.log(Number.isNaN(cadena));     // false
console.log(Number.isNaN(sin_numero)); // true

Vemos que solo da el valor true cuando el valor es realmente un elemento NaN.

La función Number.isNaN() no convierte el valor a un número. Cosa que si que hace la función .Nan()

Comprobar si es un entero

Otro forma que podemos comprobar si un valor es un número es mediante el método Number.isInteger(). En este caso se valida que el valor sea un número entero. Es decir, un literal decimal no estaría considerado como entero.

let numero = 12;
let decimal = 12.4;
let obj_numero = new Number(12);
let cadena = 'Soy una cadena';
let sin_numero = NaN;

console.log(Number.isInteger(numero));     // true
console.log(Number.isInteger(decimal));    // false
console.log(Number.isInteger(obj_numero)); // false
console.log(Number.isInteger(cadena));     // false
console.log(Number.isInteger(sin_numero)); // false

Una alternativa del método Number.isInteger() sería Number.isSafeInteger(). En este caso estamos hablando que la comprobación que se realizaría es doble, por un lado si el valor pasado es un entero y por otro si el entero se encuentra dentro del rango controlado como entero por Javascript. Es decir, que el valor estuviese entre -(2^{53}-1) y el valor 2^{53}-1. Estos valores están definidos por las propiedades Number.MIN_SAFE_INTEGER y Number.MAX_SAFE_INTEGER

De esta manera podemos tener el siguiente código:

let entero = 1234567890;
let entero_no_seguro = Number.MAX_SAFE_INTEGER+1

console.log(Number.isSafeInteger(entero));
console.log(Number.isSafeInteger(entero_no_seguro));

Comprobar si es un número finito

Por último tendríamos el método Number.isFinite() que validará si el valor es un número finito. Ya sea un número entero o decimal.

let numero = 12;
let decimal = 12.4;
let obj_numero = new Number(12);
let cadena = 'Soy una cadena';
let sin_numero = NaN;

console.log(Number.isFinite(numero));      // true
console.log(Number.isFinite(decimal));     // true
console.log(Number.isFinite(obj_numero));  // false
console.log(Number.isFinite(cadena));      // false
console.log(Number.isFinite(sin_numero));  // false

Control de límites

Podremos comprobar si el número evaluado es posible ser gestionado por Javascript mediante las constantes Number.MAX_VALUE y Number.MIN_VALUE.

De esta manera podemos hacer controles de este tipo:

let entero = Math.pow(1234567890,1234567890);

if (entero < Number.MAX_VALUE)
    console.log("Puedo gestionar este número en Javascript");
else
    console.log("NO Puedo gestionar este número en Javascript");

Si nos pasamos de los valores de máximo y mínimos representados por Number.MAX_VALUE y Number.MIN_VALUE, Javascript pasa a considerarlo como valores infinitos, ya sea +Infinity o -Infinity o en el objeto Number con las propiedades Number.NEGATIVE_INFINITY y Number.POSITIVE_INFINITY.


Mejora esta página