typescript-tipo-number

El tipo Number en TypeScript

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