JavaScript – números y fechas
En JavaScript, los números se implementan en Formato en coma flotante de doble precisión de 64 bits IEEE 754.
developer.mozilla.org
Que encontraras aquí?
En esta entrada encontraras mis apuntes relacionados con los números y las fechas de JavaScript así como sus métodos o objetos y referencias a documentación oficial.
Tipo Number
Una variable con el valor de tipo number puede almacenar un número entre ±2−1022 y ±2+1023, o aproximadamente ±10−308 a ±10+308. Pudiendo representar los valores enteros hasta ±253.
Además, number puede almacenar el valor de números decimales y almacena 4 tipos de valores simbólicos.
Tipos de valores simbólicos
- + Infinity Representa el infinito en valor positivo.
- – Infinity Representa el infinito en valor negativo.
- NaN (Not-a-Number) literalmente representa que no es un numero.
- BigInt Para representar números enteros muy grandes.
Sistemas numéricos
JavaScript es capaz de representar en number distintos sistemas numéricos, como es decimal, binario, octal, hexadecimal o Exponenciados.
Números decimales
Podemos utilizar 0 en la izquierda para definir un numero en sistema decimal pero si los números continuos son menor a 8, este será representado como un octal.
let decimal = 0888 // 888 procesado como decimal
let octal = 0777 // procesado como octal en modo no estricto (511 en decimal)
Números binarios
Para declarar un valor binario hace falta iniciar el numero con la sintaxis (0b) o (0B), el valor no variara y si algún valor siguiente no es ni 0 o 1 entonces devolverá un SyntaxError.
const cinco = 0b00000101 // 5
const unBit = 0b01 // 1
Números octales
El sistema numérico octal va desde el 0 al 7. Para que number interprete un valor como octal siempre hay que declararlo con un 0 al inicio de su valor.
var n = 010; // 8
var m = 0644; // 420
El modo estricto en ECMAScript 5 prohíbe la sintaxis octal.
En caso de querer representar números octales compatibles con ECMAScript 5 en modo estricto hay que declarar el valor con el prefijo “0o“.
var a = 0o10; // ES2015: 8
Números hexadecimales
La sintaxis para declarar un valor en hexadecimal pasa por usar el prefijo “0x” o “0X” al inicio del valor.
En caso de que el valor este fuera de rango lanzara un SyntaxError.
0xFFFFFFFFFFFFFFFFF // 295147905179352830000
0x123456789ABCDEF // 81985529216486900
0XA // 10
Exponenciación de números
Podemos declarar el valor de un number en forma de potencia, para ello, nos bastara con añadir E seguido de la potencia.
const mil = 1E3 // 1000
const dosm = 2e6 // 2000000
let diez = 0.1e2 // 10
Objeto Number
Number es un objeto primitivo envolvente que permite representar y manipular valores numéricos cómo 37 o -9.25. El constructor Number contiene constantes y métodos para trabajar con números. Valores de otro tipo pueden ser convertidos a números usando la función Number().
Propiedades de Number
MAX_VALUE
// El número representable mas grande
let biggestNum = Number.MAX_VALUE;
// ±1.7976931348623157e+308
MIN_VALUE
// El número representable mas pequeño
let smallestNum = Number.MIN_VALUE;
// ±5e-324
NaN
// Este valor representa que no es un numero
var notANum = Number.NaN;
NEGATIVE_INFINITY
// Valor infinito negativo especial; devuelto por desbordamiento
var negInfiniteNum = Number.NEGATIVE_INFINITY;
POSITIVE_INFINITY
// Valor infinito positivo especial; devuelto por desbordamiento
var infiniteNum = Number.POSITIVE_INFINITY;
EPSILON
// Representa el valor mas pequeño entre 1 y el siguiente mayor que 1.
let a=0.1;
let b=0.2;
console.log('Contenido de la variable`a`:',a);
console.log('Contenido de la variable`b`:b);
let suma = a+b; // Resultado esperado:0.3
console.log('Contenido de la variable`suma:',suma);
console.log(suma === 0.3);
console.log(Math.abs(a + b - 0.3 ) < Number.EPSILON);
console.log(Number.EPSILON);
Métodos de Number
parseFloat()
// Analiza un argumento de cadena y devuelve un numero de punto flotante
var numString = "143.55"
console.log(parseFloat(numString));
parseInt()
// Analiza un argumento de cadena y devuelve un entero de la raíz o base especificada.
function roughScale(x, base) {
const parsed = Number.parseInt(x, base);
if (Number.isNaN(parsed)) {
return 0;
}
return parsed ;
}
console.log(roughScale(' 11', 3)); // output: 4
console.log(roughScale('321', 2)); // output: 0 porque el balor 321 sobrepasa al sistema binario
isFinite()
// Determina si el valor pasado es un número finito.
console.log(Number.isFinite(1 / 0));
// expected output: false
console.log(Number.isFinite(10 / 5));
// expected output: true
console.log(Number.isFinite(0 / 0));
// expected output: false
isInteger()
// Determina si el valor pasado es de tipo entero.
function fits(x, y) {
if (Number.isInteger(y / x)) {
return 'Fits!';
}
return 'Does NOT fit!';
}
console.log(fits(5, 10));
// expected output: "Fits!"
console.log(fits(5, 11));
// expected output: "Does NOT fit!"
Objeto Math
Es un objeto incorporado que tiene propiedades y métodos para constantes y funciones matemáticas. No es un objeto de función. Este no funciona con valores tipo BigInt.
Todas las propiedades y métodos de Math son estáticos. Como la constante pi o funciones matemáticas como cosenos, raíces cuadradas tangentes…
//constante pi
console.log(Math.PI);
Para mas información sobre las funciones y propiedades de Math pulsa aquí.
Objeto Date
JavaScript no dispone de un tipo de dato que almacene como tal las fechas, para ello podemos usar el objeto Date y sus métodos para trabajar con fechas y horas. Este objeto tiene una gran cantidad de métodos para establecer, obtener y manipular fechas.
En este sentido JavaScript comparte muchas similitudes con Java, pues comparte muchos de los métodos y ambos lenguajes almacenan fechas como el numero de milisegundos desde el 1 de enero de 1970 a las 00:00:00
Para declarar una fecha:
// Un conjunto de valores enteros para año, mes, día, hora, minuto y segundos.
var nacimiento = new Date(1990,10,27,23,34,12);
console.log(nacimiento)
Métodos:
Los métodos del objeto Date para manejar fechas y horas se incluyen en estas categorías generales:
- métodos establecedores set, para configurar valores de fecha y hora en objetos Date.
- Métodos captadores get, para obtener valores de fecha y hora de objetos Date.
- métodos conversores to, para devolver valores de cadena de objetos Date.
- métodos parse y UTC, para analizar cadenas de Date.
Para mas información sobre como utilizar los métodos de date pulsa aqui.