Números de JavaScript

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

Prueba personalmente

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

Prueba personalmente

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

Prueba personalmente

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

Prueba personalmente

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

Prueba personalmente

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)

Prueba personalmente

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)

Prueba personalmente

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)

Prueba personalmente

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)

Prueba personalmente

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;

Prueba personalmente

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;

Prueba personalmente

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

Prueba personalmente

Este ejemplo también se comportará así:

var x = "100";
var y = "10";
var z = x * y;       // z será 1000

Prueba personalmente

Este ejemplo se comportará así:

var x = "100";
var y = "10";
var z = x - y;      // z será 90

Prueba personalmente

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)

Prueba personalmente

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)

Prueba personalmente

Sin embargo, si la cadena contiene un valor numérico, el resultado será un número:

Ejemplo

var x = 100 / "10";     // x será 10

Prueba personalmente

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

Prueba personalmente

a ser cuidadoso NaN.Cuidado si usas NaNentonces el resultado también será NaN:

Ejemplo

var x = NaN;
var y = 5;
var z = x + y;         // z será NaN

Prueba personalmente

el resultado puede ser una concatenación de cadenas:

Ejemplo

var x = NaN;
var y = "5";
var z = x + y;         // z será NaN5

Prueba personalmente

NaN es un número,typeof NaN devuelve number:

Ejemplo

typeof NaN;             // Devuelve "number"

Prueba personalmente

Infinity

Infinity o -Infinityes 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;
}

Prueba personalmente

Dividir por 0 (cero) también generará Infinity:

Ejemplo

var x =  2 / 0;          // x será Infinity
var y = -2 / 0;          // y será -Infinity

Prueba personalmente

Infinity es un número:typeOf Infinity devuelve number.

Ejemplo

typeof Infinity;        // Devuelve "number"

Prueba personalmente

hexadecimal

JavaScript devuelve el valor 0x de las constantes numéricas se interpretan como hexadecimales.

Ejemplo

var x = 0xFF;             // x será 255.

Prueba personalmente

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

Prueba personalmente

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

Prueba personalmente

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

Prueba personalmente

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

Prueba personalmente

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

Prueba personalmente

Los objetos JavaScript no se pueden comparar.