preloader

Números en JavaScript Moderno

En JavaScript, existen dos tipos principales de números:

  1. Números regulares: Se almacenan usando el formato de 64 bits IEEE-754, conocido como “números de coma flotante de doble precisión”. Estos son los números que se utilizan con más frecuencia y son el foco principal de este capítulo.
  2. BigInt: Representan enteros con longitud arbitraria. Son necesarios en situaciones donde los números regulares no pueden manejar valores superiores a 2^53 o inferiores a -2^53 con precisión. Los BigInt tienen un capítulo dedicado.

Formatos para Escribir Números

Notación estándar y separadores

Un número grande como mil millones puede escribirse de la forma convencional:

				
					let billion = 1000000000;

				
			

También es posible usar guiones bajos para mejorar la legibilidad:

				
					let billion = 1_000_000_000;

				
			

Los guiones bajos son ignorados por el motor de JavaScript y sirven únicamente para facilitar la lectura del código.

Notación científica

Para evitar escribir largas cadenas de ceros, JavaScript permite usar la notación científica agregando la letra «e» seguida del número de ceros:

				
					let billion = 1e9;  // 1 y 9 ceros
alert(7.3e9);  // 7.3 mil millones
				
			

Un número pequeño, como un microsegundo, puede escribirse así:

				
					let microsecond = 0.000001;

				
			

O utilizando «e» para evitar ceros:

				
					let microsecond = 1e-6; // 1 y seis ceros

				
			

Sistemas Numéricos

JavaScript soporta varios sistemas numéricos, incluyendo hexadecimales, binarios y octales:

  • Hexadecimal: Prefijo 0x

				
					alert(0xff); // 255

				
			

Binario: Prefijo 0b

				
					let binary = 0b11111111; // 255

				
			

Octal: Prefijo 0o

				
					let octal = 0o377; // 255

				
			

Conversión de Números

El método num.toString(base) convierte un número en una cadena en la base especificada:

				
					let num = 255;
alert(num.toString(16)); // "ff"
alert(num.toString(2));  // "11111111"

				
			

Las bases pueden variar entre 2 y 36. Los usos comunes incluyen:

  • Base 16: Para colores, codificación de caracteres.
  • Base 2: Para operaciones bit a bit.
  • Base 36: Para acortar identificadores largos.

Redondeo

Hay varias funciones incorporadas para redondear números:

  • Math.floor: Redondea hacia abajo.
  • Math.ceil: Redondea hacia arriba.
  • Math.round: Redondea al entero más cercano.
  • Math.trunc: Elimina la parte decimal.

Ejemplo:

				
					let num = 1.23456;
alert(Math.round(num * 100) / 100); // 1.23

				
			

El método toFixed(n) redondea el número a n dígitos después del punto decimal y devuelve una cadena:

				
					let num = 12.34;
alert(num.toFixed(1)); // "12.3"

				
			

Precisión Numérica

Los números en JavaScript pueden perder precisión debido a su representación en formato de 64 bits IEEE-754:

				
					alert(0.1 + 0.2 == 0.3); // false
alert(0.1 + 0.2); // 0.30000000000000004

				
			

Para evitar problemas con la precisión, se puede usar toFixed:

				
					let sum = 0.1 + 0.2;
alert(sum.toFixed(2)); // "0.30"

				
			

Valores Especiales

  • Infinity y NaN son valores especiales. isFinite(value) y isNaN(value) verifican estos valores.
  • Number.isNaN y Number.isFinite son versiones más estrictas que no convierten el argumento a número.

Comparación con Object.is

El método Object.is compara valores de manera más confiable que === para ciertos casos extremos:

  • Object.is(NaN, NaN) es true.
  • Object.is(0, -0) es false.

parseInt y parseFloat

Estas funciones convierten cadenas a números:

				
					alert(parseInt('100px')); // 100
alert(parseFloat('12.5em')); // 12.5

				
			

parseInt puede recibir una base opcional:

				
					alert(parseInt('0xff', 16)); // 255

				
			

Funciones Matemáticas

JavaScript tiene un objeto Math con funciones y constantes matemáticas útiles:

  • Math.random(): Devuelve un número aleatorio entre 0 y 1.
  • Math.max(a, b, ...) y Math.min(a, b, ...): Devuelven el mayor y menor de una lista de números.
  • Math.pow(n, exp): Calcula n elevado a exp.

Resumen

  • Usar notación científica con «e» para números grandes o pequeños.
  • Soporte para números en bases hexadecimal, binaria y octal.
  • Conversión de números a diferentes bases con toString(base).
  • Redondeo con Math.floor, Math.ceil, Math.trunc, Math.round y toFixed.
  • Precaución con la precisión numérica en operaciones decimales.
  • Uso de isFinite y isNaN para validar números.
  • Conversión de cadenas con parseInt y parseFloat.
  • Funciones matemáticas adicionales en el objeto Math.

Related Post

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *