JavaScript tiene solo un tipo de número. Los números se pueden escribir con o sin decimales.
Ejemplo:
let x = 3.14; // A number with decimals
let y = 3; // A number without decimals
Los números extra grandes o extra pequeños se pueden escribir con notación científica (exponente):
Ejemplo:
let x = 123e5; // 12300000
let y = 123e-5; // 0.0012
Los números de JavaScript son siempre de coma flotante de 64 bits
A diferencia de muchos otros lenguajes de programación, JavaScript no define diferentes tipos de números, como integer
, short
, long
, float
, etc.
Los números de JavaScript siempre se almacenan como números de coma flotante de doble precisión, siguiendo el estándar internacional IEEE 754.
Este formato almacena números en 64 bits, donde el número (la fracción) se almacena en los bits 0 al 51, el exponente en los bits 52 al 62 y el signo en el bit 63:
Valor (aka Fraction/Mantissa) | Exponente | Signo |
52 bits (0 - 51) | 11 bits (52 - 62) | 1 bit (63) |
Precisión entera
Los números enteros (números sin punto ni notación de exponente) tienen una precisión de hasta 15 dígitos.
Ejemplo:
let x = 999999999999999; // x will be 999999999999999
let y = 9999999999999999; // y will be 10000000000000000
El número máximo de decimales es 17.
Precisión flotante
Ejemplo:
La aritmética de coma flotante no siempre es 100% precisa:
let x = 0.2 + 0.1;
Ejemplo:
Para resolver el problema anterior, es útil multiplicar y dividir:
let x = (0.2 * 10 + 0.1 * 10) / 10;
Agregar números y cadenas
ADVERTENCIA !!
JavaScript utiliza el operador + tanto para la suma como para la concatenación.
Los número se suman. Las cadenas se concatenan.
Si sumas dos números, el resultado será un número:
Ejemplo:
let x = 10;
let y = 20;
let z = x + y;
Si agrega dos cadenas, el resultado será una concatenación de cadenas:
Ejemplo:
let x = "10";
let y = "20";
let z = x + y;
Si agrega un número y una cadena, el resultado será una concatenación de cadenas:
Ejemplo:
let x = 10;
let y = "20";
let z = x + y;
Si agrega una cadena y un número, el resultado será una concatenación de cadenas:
Ejemplo:
let x = "10";
let y = 20;
let z = x + y;
Un error común es esperar que este resultado sea 30:
Ejemplo:
let x = 10;
let y = 20;
let z = "The result is: " + x + y;
Un error común es esperar que este resultado sea 102030:
Ejemplo:
let x = 10;
let y = 20;
let z = "30";
let result = x + y + z;
El intérprete de JavaScript funciona de izquierda a derecha.
Los primeros 10
+ 20
se suman porque x
e y
son ambos números.
Entonces se concatena 30
+ "30"
porque z
es una cadena.
Cadenas numéricas
Las cadenas de JavaScript pueden tener contenido numérico:
let x = 100; // x is a number
let y = "100"; // y is a string
JavaScript intentará convertir cadenas en números en todas las operaciones numéricas:
Esto funcionará:
let x = "100";
let y = "10";
let z = x / y;
Esto también funcionará:
let x = "100";
let y = "10";
let z = x * y;
Y esto funcionará:
let x = "100";
let y = "10";
let z = x - y;
Pero esto no funcionará:
let x = "100";
let y = "10";
let z = x + y;
En el último ejemplo, JavaScript usa el operador
+
para concatenar las cadenas.
NaN
- No es un número
NaN
es una palabra reservada de JavaScript que indica que un número no es un número legal.
Intentar hacer aritmética con una cadena no numérica dará como resultado NaN
(No es un número):
Ejemplo:
let x = 100 / "Apple";
Sin embargo, si la cadena es numérica, el resultado será un número:
Ejemplo:
let x = 100 / "10";
Puedes utilizar la función global de JavaScript isNaN()
para averiguar si un valor no es un número:
Ejemplo:
let x = 100 / "Apple";
isNaN(x);
Cuidado con NaN
. Si usa NaN
en una operación matemática, el resultado también será NaN
:
Ejemplo:
let x = NaN;
let y = 5;
let z = x + y;
O el resultado podría ser una concatenación como NaN5
:
Ejemplo:
let x = NaN;
let y = "5";
let z = x + y;
NaN
es un número: typeof
NaN
devuelve el número:
Ejemplo:
typeof NaN;
Infinito
Infinity
(o -Infinity
) es el valor que JavaScript devolverá si calcula un número fuera del mayor número posible.
Ejemplo:
let myNumber = 2;
// Execute until Infinity
while (myNumber != Infinity) {
myNumber = myNumber * myNumber;
}
La división por 0 (cero) también genera Infinito:
Ejemplo:
let x = 2 / 0;
let y = -2 / 0;
Infinity
es un número: typeof Infinity
devuelve un número.
Ejemplo:
typeof Infinity;
Hexadecimal
JavaScript interpreta las constantes numéricas como hexadecimales si están precedidas por 0x
.
Ejemplo:
let x = 0xFF;
Nunca escriba un número con un cero a la izquierda (como 07). Algunas versiones de JavaScript interpretan los números como octales si se escriben con un cero a la izquierda.
De forma predeterminada, JavaScript muestra los números como decimales de base 10.
Pero puedes usar el método toString()
para generar números desde la base 2 hasta la base 36.
El hexadecimal es base 16. El decimal es base 10. El octal es base 8. El binario es base 2.
Ejemplo:
let myNumber = 32;
myNumber.toString(32);
myNumber.toString(16);
myNumber.toString(12);
myNumber.toString(10);
myNumber.toString(8);
myNumber.toString(2);
Números de JavaScript como objetos
Normalmente los números de JavaScript son valores primitivos creados a partir de literales:
let x = 123;
Pero los números también se pueden definir como objetos con la palabra clave new
:
let y = new Number(123);
Ejemplo
let x = 123;
let y = new Number(123);
No cree objetos numéricos.
La palabra clave new
complica el código y ralentiza la velocidad de ejecución.
Los objetos numéricos pueden producir resultados inesperados:
Ejemplo:
Cuando se utiliza el operador ==
,x
y y
son iguales:
let x = 500;
let y = new Number(500);
Ejemplo:
Cuando se utiliza el operador ===
,x
y y
no son iguales.
let x = 500;
let y = new Number(500);
Tenga en cuenta la diferencia entre
(x==y)
y(x===y)
.
(x == y)
¿verdadero o falso?
let x = new Number(500);
let y = new Number(500);
(x === y)
¿verdadero o falso?
let x = new Number(500);
let y = new Number(500);
La comparación de dos objetos JavaScript siempre devuelve falso.
Referencias
Para obtener una referencia numérica completa, visite nuestro:
Referencia completa de números de JavaScript.
La referencia contiene descripciones y ejemplos de todas las propiedades y métodos de Number.
Traducido con 💚 desde W3Schools.com