Números de JavaScript
- Página anterior Plantillas de cadenas JS
- Página siguiente JS BigInt
JavaScript tiene solo un tipo de número.
Puede escribir un número con o sin punto decimal.
JavaScript Número
Los números de JavaScript se pueden escribir con o sin punto decimal:
Ejemplo
var x = 3.14; // Número con punto decimal var y = 3; // Número sin punto decimal
Los números muy grandes o muy pequeños se pueden escribir en notación científica:
Ejemplo
var x = 123e5; // 12300000 var y = 123e-5; // 0.00123
Los números de JavaScript siempre son números de coma flotante de 64 bits
A diferencia de muchos otros lenguajes de programación, JavaScript no define diferentes tipos de números, como enteros, cortos, largos, de coma flotante, etc.
Los números de JavaScript siempre se almacenan como números de coma flotante de doble precisión, según el estándar internacional IEEE 754.
Este formato utiliza 64 bits para almacenar números, donde 0 a 51 almacenan el número (fragmento), 52 a 62 almacenan el exponente y 63 el signo:
Valor(aka Fracción/Mantissa) | Exponente | Signo |
---|---|---|
52 bits(0 - 51) | 11 bits (52 - 62) | 1 bit (63) |
Precisión
Los enteros (sin usar exponentes o notación científica) se redondean a 15 dígitos.
Ejemplo
var x = 999999999999999; // x será 999999999999999 var y = 9999999999999999; // y será 10000000000000000
El número máximo de dígitos decimal es de 17, pero el cálculo de coma flotante no siempre es 100% preciso:
Ejemplo
var x = 0.2 + 0.1; // x será 0.30000000000000004
El uso de multiplicación y división ayuda a resolver el problema anterior:
Ejemplo
var x = (0.2 * 10 + 0.1 * 10) / 10; // x será 0.3
Suma de números y cadenas
¡Advertencia!!
La adición y la concatenación en JavaScript utilizan el operador +.
Los números se suman con la adición. Las cadenas se concatenan.
Si suma dos números, el resultado será un número:
Ejemplo
var x = 10; var y = 20; var z = x + y; // z será 30 (un número)
Si suma dos cadenas, el resultado será una concatenación de cadenas:
Ejemplo
var x = "10"; var y = "20"; var z = x + y; // z será 1020 (cadena)
Si suma un número y una cadena, el resultado también será una concatenación de cadenas:
Ejemplo
var x = 10; var y = "20"; var z = x + y; // z será 1020 (una cadena)
Si suma una cadena y un número, el resultado también será una concatenación de cadenas:
Ejemplo
var x = "10"; var y = 20; var z = x + y; // z será 1020 (cadena)
Un error común es creer que el resultado debería ser 30:
Ejemplo
var x = 10; var y = 20; var z = "The result is: " + x + y;
Un error común es creer que el resultado debería ser 102030:
Ejemplo
var x = 10; var y = 20; var z = "30"; var result = x + y + z;
JavaScript compila de izquierda a derecha.
Porque x y y son números, 10 + 20 se sumarán.
Porque z es una cadena, 30 + "30" se concatenará.
Cadena numérica
Las cadenas de JavaScript pueden contener contenido numérico:
var x = 100; // x es un número var y = "100"; // y es una cadena
En todas las operaciones numéricas, JavaScript intentará convertir las cadenas a números:
Este ejemplo se comportará así:
var x = "100"; var y = "10"; var z = x / y; // z será 10
Este ejemplo también se comportará así:
var x = "100"; var y = "10"; var z = x * y; // z será 1000
Este ejemplo se comportará así:
var x = "100"; var y = "10"; var z = x - y; // z será 90
Pero este ejemplo no se comportará como el anterior:
var x = "100"; var y = "10"; var z = x + y; // z no será 110 (sino 10010)
En el último ejemplo, JavaScript realiza una concatenación de cadenas con el operador +.
NaN - No es un número
NaN
Es una palabra reservada de JavaScript, que indica que un número no es un número válido.
Al intentar realizar una división con una cadena no numérica, se obtendrá NaN (No es un número):
Ejemplo
var x = 100 / "Apple"; // x será NaN (No es un número)
Sin embargo, si la cadena contiene un valor numérico, el resultado será un número:
Ejemplo
var x = 100 / "10"; // x será 10
Puede usar la función JavaScript global isNaN()
para determinar si un valor es un número:
Ejemplo
var x = 100 / "Apple"; isNaN(x); // Devuelve true, porque x no es un número
a ser cuidadoso NaN
.Cuidado si usas NaN
entonces el resultado también será NaN
:
Ejemplo
var x = NaN; var y = 5; var z = x + y; // z será NaN
el resultado puede ser una concatenación de cadenas:
Ejemplo
var x = NaN; var y = "5"; var z = x + y; // z será NaN5
NaN
es un número,typeof NaN
devuelve number
:
Ejemplo
typeof NaN; // Devuelve "number"
Infinity
Infinity
o -Infinity
es el valor que JavaScript devuelve cuando se excede el rango máximo posible de números.
Ejemplo
var myNumber = 2; while (myNumber != Infinity) { // Ejecutar hasta Infinity myNumber = myNumber * myNumber; }
Dividir por 0 (cero) también generará Infinity
:
Ejemplo
var x = 2 / 0; // x será Infinity var y = -2 / 0; // y será -Infinity
Infinity
es un número:typeOf Infinity
devuelve number
.
Ejemplo
typeof Infinity; // Devuelve "number"
hexadecimal
JavaScript devuelve el valor 0x
de las constantes numéricas se interpretan como hexadecimales.
Ejemplo
var x = 0xFF; // x será 255.
Nunca escribas números con prefijo cero (por ejemplo, 07).
Algunas versiones de JavaScript interpretarán los números con prefijo cero como octales.
Por defecto, Javascript muestra los números como decimales.
Pero puedes usar toString()
El método convierte el número en hexadecimal, octal o binario.
Ejemplo
var myNumber = 128; myNumber.toString(16); // Devuelve 80 myNumber.toString(8); // Devuelve 200 myNumber.toString(2); // Devuelve 10000000
Los números pueden ser objetos
Generalmente, los números JavaScript se crean a través de valores primitivos: var x = 123
Pero también se puede definir mediante la palabra clave new
Definido como objeto: var y = new Number(123)
Ejemplo
var x = 123; var y = new Number(123); // typeof x devuelve number // typeof y devuelve object
No cree objetos numéricos. Esto puede ralentizar la ejecución.
new
La palabra clave complica el código y produce algunos resultados inesperados:
Al usar ==
Cuando se usa el operador de igualdad, los números que parecen iguales parecen ser iguales:
Ejemplo
var x = 500; var y = new Number(500); // (x == y) es verdadero porque x y y tienen valores iguales
Al usar ===
Después del operador de igualdad, los números que parecen iguales se vuelven diferentes porque ===
Los operadores necesitan que tanto el tipo como el valor sean iguales.
Ejemplo
var x = 500; var y = new Number(500); // (x === y) es falso porque x y y tienen tipos diferentes
Incluso peor. Los objetos no se pueden comparar:
Ejemplo
var x = new Number(500); var y = new Number(500); // (x == y) es falso porque los objetos no se pueden comparar
Los objetos JavaScript no se pueden comparar.
- Página anterior Plantillas de cadenas JS
- Página siguiente JS BigInt