JavaScript tiene un solo tipo de número. Los números se pueden escribir con o sin decimales. Ejemplo:
let x = 3.14; // número con decimales
let y = 3; // número sin decimales
let x = 123e5; // 12300000
let y = 123e-5; // 0.00123
Los números extra grandes o extra pequeños se pueden escribir con notación científica (exponente).
Los números enteros (números sin notación de punto o exponente) tienen una precisión de hasta 15 dígitos. El número máximo de decimales es 17.
La aritmética de punto flotante no siempre es 100% precisa:
let x = 0.2 + 0.1;
Para resolver el problema anterior, es útil multiplicar y dividir:
let x = (0.2 * 10 + 0.1 * 10) / 10;
Los valores primitivos (como 3.14 o 2014), no pueden tener propiedades y métodos (porque no son objetos). Pero con JavaScript, los métodos y propiedades también están disponibles para valores primitivos, porque JavaScript trata los valores primitivos como objetos cuando ejecuta métodos y propiedades.
El método toString() retorna un número como un string. Todos los métodos numéricos se pueden usar en cualquier tipo de números (literales, variables o expresiones). Ejemplo:
let x = 123;
x.toString();
toExponential() retorna un string, con un número redondeado y escrito en notación exponencial. Un parámetro define el número de caracteres detrás del punto decimal. El parámetro es opcional. Si no lo especifica, JavaScript no redondeará el número.
toFixed() retorna un string, con el número escrito con un número específico de decimales.
let x = 9.656;
x.toFixed(0); // Devuelve el número sin decimales
toPrecision() retorna un string, con un número escrito con una longitud especificada.
valueOf() retorna un número como un número. En JavaScript, un número puede ser un valor primitivo (typeof = número) o un objeto (typeof = objeto). El valueOf() método se usa internamente en JavaScript para convertir objetos numéricos en valores primitivos. No hay ninguna razón para usarlo en su código. Todos los tipos de datos de JavaScript tienen un valueOf() y un método toString().
Hay 3 métodos de JavaScript que se pueden usar para convertir variables en números (Estos métodos no son métodos numéricos, sino métodos globales de JavaScript):
Los métodos globales de JavaScript se pueden usar en todos los tipos de datos de JavaScript. Estos son los métodos más relevantes cuando se trabaja con números:
Método | Descripción |
Number() | Retorna a número, convertido desde su argumento. |
parseFloat() | Analiza su argumento y retorna a un punto de número float. |
parseInt() | Analiza su argumento y lo retorna a integer. |
Number() se puede utilizar para convertir variables de JavaScript en números. Si el número no se puede convertir, NaN (No un Número) se retorna. parseInt() analiza un string y retorna un número entero. Se permiten espacios. Solo se retorna el primer número. Si el número no se puede convertir, NaN (No un Número) se retorna. parseFloat() analiza un string y retorna un número. Se permiten espacios. Solo se retorna el primer número. Si el número no se puede convertir, NaN (No un Número) se retorna.
Propiedad | Descripción |
MAX_VALUE | Retorna el número más alto posible en JavaScript. |
MIN_VALUE | Retorna el número más corto posible en JavaScript. |
POSITIVE_INFINITY | Representa infinidad (retorna en overflow) |
NEGATIVE_INFINITY | Representa infinidad negativa (retorna en overflow) |
NaN | Representa un valor “No-un-Número” |
Las propiedades numéricas no se pueden usar en variables.
JavaScript tiene un solo tipo de número. Los números se pueden escribir con o sin decimales. Ejemplo:
Propiedad | Descripción |
E | Retorna el número de Euler. |
PI | Retorna el número PI. |
SQRT2 | Retorna la raiz cuadrada de 2 |
LN2 | Retorna el logaritmo natural de 2. |
LN10 | Retorna el logaritmo natural de 10. |
LOG2E | Retorna el valor del logaritmo de E en base 2. |
Hay 4 métodos comunes para redondear un número a un entero:
Métodos | Descripción |
Math.round(x) | Retorna x redondeado a su entero más cercano. |
Math.ceil(x) | Retorna x redondeado por encina de su entero más cercano. |
Math.floor(x) | Retorna x redondeado por debajo de su entero más cercano. |
Math.trunc(x) | Retorna la parte entera de X (nuevo en ES6) |
Método | Descripión |
abs(x) | Retorna el valor absoluto de x. |
acos(x) | Retorna el arcocoseno en x, en radianes. |
acosh(x) | Retorna el arcocoseno hiperbólico de x. |
atan(x) | Retorna la arcotangente de x como un valor numérico entre -PI/2 y PI/2 radianes. |
cbrt(x) | Retorna la raíz cúbica de x. |
exp(x) | Retorna el valor de Ex. |
log(x) | Retorna el logaritmo natural (base E) de x. |
max(x, y, z, ..., n) | Retorna el número con el valor más alto. |
pow(x, y) | Retorna el valor de x a la potencia de y. |
random() | Retorna un número aleatorio entre 0 y 1. |
sqrt(x) | Retorna la raíz cuadrada de x. |
tan(x) | Retorna la tangente de un ángulo. |
Math.random() retorna un número aleatorio entre 0 (inclusive) y 1 (exclusivo).
Math.random() usada con Math.floor() puede servir para retornar enteros aleatorios. No existen los enteros de JavaScript. Estamos hablando de números sin decimales aquí.
Math.floor(Math.random() * 10); // Retorna un entero aleatorio entre 0 y 9
Math.floor(Math.random() * 100) + 1; // Retorna un entero aleatorio entre 1 y 100
Como puede ver en los ejemplos anteriores, podría ser una buena idea crear una función aleatoria adecuada para usarla con todos los enteros aleatorios. Esta función de JavaScript siempre devuelve un número aleatorio entre min (incluido) y max (excluido):
function getRndInteger(min, max) {
return Math.floor(Math.random() * (max - min) ) + min;
}
Esta función de JavaScript siempre devuelve un número aleatorio entre min y max (ambos incluidos):
function getRndInteger(min, max) {
return Math.floor(Math.random() * (max - min + 1) ) + min;
}