En TypeScript, el tipo number
es utilizado para representar números, tanto enteros como de punto flotante.
A diferencia de otros lenguajes que pueden tener tipos distintos para enteros y números de punto flotante, TypeScript (y JavaScript) usa un único tipo number
para ambos.
let entero: number = 42;
let decimal: number = 3.14;
let hex: number = 0xff; // Notación hexadecimal
let bin: number = 0b1010; // Notación binaria
let oct: number = 0o744; // Notación octal
TypeScript también admite la notación científica para la representación de números muy grandes o muy pequeños.
let grande: number = 1e6; // 1 * 10^6
let pequeño: number = 1e-6; // 1 * 10^-6
Operaciones aritméticas
TypeScript permite realizar las operaciones aritméticas básicas con el tipo number
: suma, resta, multiplicación, división y módulo.
let a: number = 10;
let b: number = 3;
console.log(a + b); // 13
console.log(a - b); // 7
console.log(a * b); // 30
console.log(a / b); // 3.3333333333333335
console.log(a % b); // 1
Precisión y errores de redondeo
Dado que TypeScript usa el tipo number
de JavaScript, que se basa en el estándar IEEE 754 para números de punto flotante, puede haber problemas de precisión en operaciones con números decimales.
let x: number = 0.1 + 0.2;
console.log(x); // 0.30000000000000004
Para manejar la precisión, especialmente en aplicaciones financieras, es común utilizar librerías como decimal.js
o big.js
Métodos y propiedades de Number
TypeScript proporciona varios métodos y propiedades estáticas en el objeto Number
para ayudarnos a trabajar con números.
Propiedades estáticas
Number.MAX_VALUE
: El valor numérico máximo representable.Number.MIN_VALUE
: El valor numérico positivo más pequeño representable.Number.POSITIVE_INFINITY
: Representa el infinito positivo.Number.NEGATIVE_INFINITY
: Representa el infinito negativo.Number.NaN
: Representa un valor que no es un número (Not-A-Number).
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
console.log(Number.MIN_VALUE); // 5e-324
console.log(Number.POSITIVE_INFINITY); // Infinity
console.log(Number.NEGATIVE_INFINITY); // -Infinity
console.log(Number.NaN); // NaN
Métodos estáticos
Number.isFinite(value)
: Determina si el valor es un número finito.Number.isInteger(value)
: Determina si el valor es un número entero.Number.isNaN(value)
: Determina si el valor es NaN.Number.isSafeInteger(value)
: Determina si el valor es un entero seguro (entre -(2^53 - 1) y 2^53 - 1).
console.log(Number.isFinite(123)); // true
console.log(Number.isInteger(123.456)); // false
console.log(Number.isNaN(NaN)); // true
console.log(Number.isSafeInteger(Math.pow(2, 53))); // false
Conversión de tipos
Conversión de string a número
Es común necesitar convertir cadenas de texto a números. TypeScript proporciona varias formas de hacer esto, incluyendo parseInt
, parseFloat
y el operador unario +
.
let cadena: string = "42";
let entero: number = parseInt(cadena); // 42
let flotante: number = parseFloat("3.14"); // 3.14
let numero: number = +cadena; // 42
Conversión de número a string
Para convertir un número a una cadena, se puede utilizar el método toString
.
let num: number = 42;
let str: string = num.toString(); // "42"
Tratamiento de números especiales
NaN (Not-a-Number)
NaN
es un valor especial que representa un valor no numérico. Es el resultado de operaciones no definidas o ilegales, como dividir 0 por 0.
let nan: number = 0 / 0;
console.log(nan); // NaN
console.log(isNaN(nan)); // true
Infinito
El valor Infinity
se produce cuando una operación numérica excede el rango máximo representable.
let infinito: number = 1 / 0;
console.log(infinito); // Infinity