15. Conversión de unidades y escalas

Convertir unidades permite expresar una misma magnitud en distintos sistemas. Las escalas permiten transformar valores manteniendo una relación proporcional, algo esencial en gráficos, interfaces, mediciones y simulaciones.

15.1 Introducción

Un programa puede recibir una distancia en metros y necesitar mostrarla en kilómetros, recibir una temperatura en Celsius y convertirla a Fahrenheit, o adaptar una medida de diseño a otro tamaño de pantalla.

La conversión de unidades se basa en factores de conversión. Una escala, por su parte, transforma valores de un rango a otro conservando una relación proporcional.

En programación, estas operaciones deben escribirse con claridad porque un error de unidad puede producir resultados muy incorrectos.

15.2 Qué es una unidad

Una unidad indica cómo se mide una magnitud. Por ejemplo, una longitud puede expresarse en milímetros, centímetros, metros o kilómetros.

1 kilómetro = 1000 metros
1 metro = 100 centímetros
1 centímetro = 10 milímetros

Convertir unidades no cambia la magnitud real, solo cambia la forma de expresarla.

const kilometros = 3;
const metros = kilometros * 1000;

console.log(metros);

15.3 Convertir metros, centímetros y milímetros

Para convertir desde metros hacia unidades más pequeñas, multiplicamos. Para volver a metros, dividimos.

Conversión Operación Ejemplo
Metros a centímetros multiplicar por 100 2 m = 200 cm
Centímetros a metros dividir por 100 250 cm = 2.5 m
Metros a milímetros multiplicar por 1000 1.5 m = 1500 mm
const metros = 2.5;

console.log(metros * 100);
console.log(metros * 1000);
console.log(250 / 100);

15.4 Funciones de conversión

Cuando una conversión se repite, conviene convertirla en una función con un nombre claro.

function kilometrosAMetros(kilometros) {
  return kilometros * 1000;
}

function metrosAKilometros(metros) {
  return metros / 1000;
}

console.log(kilometrosAMetros(4.2));
console.log(metrosAKilometros(1500));

Los nombres de las funciones ayudan a evitar confusiones entre multiplicar y dividir.

15.5 Conversión de tiempo

El tiempo se convierte usando factores conocidos: 1 minuto son 60 segundos y 1 hora son 60 minutos.

const horas = 2;
const minutos = horas * 60;
const segundos = minutos * 60;

console.log(minutos);
console.log(segundos);

Estas conversiones aparecen en temporizadores, animaciones, registros de eventos y mediciones de rendimiento.

15.6 Conversión de velocidad

Algunas unidades combinan dos magnitudes. Por ejemplo, kilómetros por hora y metros por segundo relacionan distancia y tiempo.

m/s = km/h ÷ 3.6
const velocidadKmH = 72;
const velocidadMS = velocidadKmH / 3.6;

console.log(velocidadMS);

Este tipo de conversión aparece en simulaciones, videojuegos, física básica y aplicaciones de movimiento.

15.7 Conversión de temperatura

La conversión de temperatura no siempre usa solo multiplicación o división. Para convertir Celsius a Fahrenheit también se suma 32.

Fahrenheit = Celsius × 9/5 + 32
function celsiusAFahrenheit(celsius) {
  return celsius * 9 / 5 + 32;
}

function fahrenheitACelsius(fahrenheit) {
  return (fahrenheit - 32) * 5 / 9;
}

console.log(celsiusAFahrenheit(25));
console.log(fahrenheitACelsius(77));

Los paréntesis en la conversión inversa son importantes para restar antes de multiplicar.

15.8 Unidades de almacenamiento

En informática usamos unidades como bytes, kilobytes, megabytes y gigabytes. En muchos contextos se usa base decimal: 1 KB = 1000 bytes. En otros se usa base binaria: 1 KiB = 1024 bytes.

Unidad decimal Equivalencia Unidad binaria Equivalencia
KB 1000 bytes KiB 1024 bytes
MB 1000 KB MiB 1024 KiB
GB 1000 MB GiB 1024 MiB
const megabytes = 5;
const bytesDecimal = megabytes * 1000 * 1000;
const bytesBinario = megabytes * 1024 * 1024;

console.log(bytesDecimal);
console.log(bytesBinario);

15.9 Qué es una escala

Una escala es un factor que multiplica una medida para aumentarla o reducirla manteniendo una proporción.

medidaNueva = medidaOriginal × escala
const anchoOriginal = 800;
const altoOriginal = 600;
const escala = 0.75;

console.log(anchoOriginal * escala);
console.log(altoOriginal * escala);

Si usamos la misma escala en ancho y alto, mantenemos la proporción de la figura.

15.10 Escalar entre rangos

A veces queremos convertir un valor de un rango a otro. Por ejemplo, transformar una nota de 0 a 10 en un porcentaje de 0 a 100.

valorNuevo = (valor - mínimoOriginal) / (máximoOriginal - mínimoOriginal) × (máximoNuevo - mínimoNuevo) + mínimoNuevo
function escalar(valor, minOriginal, maxOriginal, minNuevo, maxNuevo) {
  return (valor - minOriginal) /
    (maxOriginal - minOriginal) *
    (maxNuevo - minNuevo) +
    minNuevo;
}

console.log(escalar(7.5, 0, 10, 0, 100));
console.log(escalar(50, 0, 100, -1, 1));

Esta fórmula se usa en gráficos, barras de progreso, videojuegos, visualización de datos e inteligencia artificial.

15.11 Aplicación: coordenadas de pantalla

Si un valor está en una escala lógica de 0 a 1, podemos convertirlo a píxeles multiplicando por el tamaño disponible.

const posicionNormalizada = 0.35;
const anchoPantalla = 1200;
const posicionPixeles = posicionNormalizada * anchoPantalla;

console.log(posicionPixeles);

Esta técnica aparece en interfaces, animaciones, barras, gráficos y escenas interactivas.

15.12 Aplicación: mapas y planos

En un mapa o plano, una distancia dibujada representa una distancia real. Por ejemplo, escala 1:100 significa que 1 unidad en el plano representa 100 unidades reales.

const distanciaPlanoCm = 8;
const escala = 100;
const distanciaRealCm = distanciaPlanoCm * escala;
const distanciaRealMetros = distanciaRealCm / 100;

console.log(distanciaRealCm);
console.log(distanciaRealMetros);

15.13 Validar unidades y factores

Una conversión debe validar que el factor tenga sentido. No se puede escalar correctamente con un rango original de tamaño cero.

function escalar(valor, minOriginal, maxOriginal, minNuevo, maxNuevo) {
  if (maxOriginal === minOriginal) {
    return "Rango original inválido";
  }

  return (valor - minOriginal) /
    (maxOriginal - minOriginal) *
    (maxNuevo - minNuevo) +
    minNuevo;
}

console.log(escalar(5, 0, 10, 0, 100));
console.log(escalar(5, 10, 10, 0, 100));

15.14 Errores comunes

  • Multiplicar cuando correspondía dividir, o dividir cuando correspondía multiplicar.
  • Mezclar unidades distintas en una misma fórmula sin convertirlas antes.
  • Confundir unidades decimales y binarias de almacenamiento.
  • Olvidar el desplazamiento en conversiones como Celsius a Fahrenheit.
  • Escalar ancho y alto con factores distintos cuando se desea conservar proporción.
  • No validar rangos o factores antes de calcular.
const metros = 1.75;
const centimetrosCorrecto = metros * 100;
const centimetrosIncorrecto = metros / 100;

console.log(centimetrosCorrecto);
console.log(centimetrosIncorrecto);

15.15 Qué debes recordar de este tema

  • Convertir unidades cambia la forma de expresar una magnitud, no la magnitud real.
  • Las conversiones suelen usar factores de multiplicación o división.
  • Algunas conversiones, como temperatura, también usan sumas o restas.
  • Una escala multiplica medidas para aumentarlas o reducirlas proporcionalmente.
  • Escalar entre rangos permite transformar valores de una escala a otra.
  • En programación conviene usar funciones con nombres claros para cada conversión.
  • Siempre hay que cuidar unidades, rangos inválidos y precisión numérica.

15.16 Conclusión

La conversión de unidades y el manejo de escalas son tareas frecuentes en programación. Permiten conectar datos con medidas reales, adaptar interfaces, representar gráficos y transformar valores entre distintos sistemas.

En el próximo tema estudiaremos magnitudes y mediciones, para entender mejor qué tipo de valores estamos representando y cómo interpretarlos correctamente.