¿Qué es un numero?
En JS cualquier número es un number. 2, 3, -1, 3.14
1
2
3
|
console.log(typeof -0); // number
console.log(typeof 10); // number
console.log(typeof 9312.1); // number
|
Si comparamos 0 === -0, ambos tienen el mismo valor.
1
|
console.log(0 === -0) // true
|
El estandar IEEE754
Al representar números decimales, JS y un montón de otros lenguajes no son muy precisos.
1
2
|
console.log(0.1 + 0.2) // 0.30000000000000004
console.log((0.1 + 0.2).toFixed(80)) // 0.300000000000000044408920985006261616945266723632812500
|
Cuando usemos decimales, es importante truncar la cantidad de dígitos
1
2
3
|
let decimal = .1 + 0.2
console.log(decimal.toFixed(2)) // 0.30 (es un string)
console.log(+decimal.toFixed(2)) // 0.30 (es un number)
|
Números seguros
El número mínimo que podemos usar es:
1
2
|
let numMin = -(2 ** 53) + 1
console.log(numMin) //-9007199254740991
|
Y el máximo
1
2
|
let numMax = 2 ** 53 + 1
console.log(numMax) //9007199254740991
|
Si pasamos de estos números, ya serán aproximaciones
1
2
|
console.log(numMax + 1) //9007199254740992
console.log(numMax + 2) //9007199254740992
|
También se puede acceder a ellos con Number.MAX_SAFE_INTEGER || Number.MIN_SAFE_INTEGER
1
|
console.log(numMin === Number.MIN_SAFE_INTEGER) // true
|
Dentro de este rango de números es seguro realizar operaciones numéricas
1
2
|
console.log(Number.isSafeInteger(numMin)) //true
console.log(Number.isSafeInteger(990719925474099321)) //false
|
Infinito
Hay 2 números que van más allá de estos
1
2
|
Infinity // Infinity
-Infinity //-Infinity
|
Para saber si un número es finito:
1
2
|
console.log(isFinite(300)) // true
console.log(isFinite(Infinity)) // false
|
Infinity o -Infinity es el resultado de dividir un numero /0 o /-0
1
|
console.log(3/0) // Infinity
|
Pero, y 0/0 ?
1
|
console.log(0/0) // NaN
|
NaN
Not A Number o NaN es de tipo number y es el resutado de cómputos invalidos
1
2
3
4
5
6
7
|
console.log("hola" / 3) // NaN
console.log(7 / 'x') // NaN
console.log(NaN + 10) // NaN
console.log(NaN === NaN) // false
console.log(isNaN(30)) // false
console.log(isNaN(NaN)) // true
|
Indice
- Tipos de Datos Primitivos
- String
- Number <– Estás aquí
- Boolean
- Null y Undefined
- Symbol
Información y ejemplos obtenidos de La Cocina del Código