🧮 Computational Mathematics

Inicio · Parte 00 — Pensamiento matemático desde cero

004 — Decimales y conversiones

cero-absoluto clase 4 de 20 4 horas demostración decimal_conversion

El desarrollo decimal de una fracción es finito o periódico, y qué caso ocurre depende solo del denominador.

Fórmulas

a/b tiene desarrollo finito ⟺ b (reducido) solo tiene factores 2 y 5
0.abcabc... = abc/999

Desarrollo

Toda fracción tiene desarrollo decimal finito o periódico; nunca uno infinito sin patrón. La razón es de conteo puro: al dividir por b, los restos posibles son 0, 1, ..., b−1. Si aparece el resto 0, el desarrollo termina. Si no, en a lo sumo b pasos algún resto se repite —hay más pasos que restos posibles— y desde ahí el desarrollo se repite. Es el principio del palomar (clase 090) aplicado antes de haberlo enunciado.

Cuál de los dos casos ocurre depende únicamente de los factores primos del denominador reducido. Nuestro sistema decimal es base 10 = 2·5, así que solo las fracciones cuyo denominador se factoriza en potencias de 2 y 5 tienen desarrollo finito: 3/8 sí (8 = 2³), 1/7 no (7 no divide ninguna potencia de 10).

Esta observación es la clave para entender la parte 01. En base 2, los denominadores «buenos» son solo las potencias de 2. Y 1/10 —que en decimal es finito y trivial— no lo es en binario. De ahí que 0.1 no sea representable exactamente en un float, que es exactamente el asunto de la clase 029. La rareza no está en la máquina: está en que cambiar de base cambia qué fracciones son «redondas».

El camino inverso —de periódico a fracción— usa una identidad limpia: el periodo de longitud k se escribe sobre k nueves. 0.142857142857... = 142857/999999, que simplificado es exactamente 1/7.

Ejemplo trabajado

Clasificar dos fracciones y reconstruir una desde su periodo.

3/8:  8 = 2³           → solo factores 2      → finito
      3/8 = 0.375

1/7:  7 primo ≠ 2, 5   → periódico
      1/7 = 0.142857 142857 142857...
      periodo = "142857", longitud 6

Reconstrucción: 142857/999999
              = 142857/999999   (dividir num. y den. por 142857)
              = 1/7             ✓

La longitud del periodo de 1/7 es 6 = 7−1. No es casualidad: está relacionada con el orden multiplicativo de 10 módulo 7, tema de la clase 098.

Qué calcula el laboratorio

Fracciones con desarrollo decimal finito y periódico.

python classes/part-00-pensamiento-matematico-desde-cero/004-decimales-y-conversiones/lab.py
compmath run 004

Salidas del laboratorio (6)

Muestra de la ejecución real

{
  "3/8": 0.375,
  "3/8_es_finito": true,
  "1/7_primeros_12_digitos": "0.142857142857",
  "1/7_periodo": "142857",
  "1/7_reconstruido": "1/7",
  "coincide_con_1/7": true
}

Errores comunes

Dónde se usa

Explica por qué los sistemas financieros trabajan en centavos enteros o con Decimal, y por qué un total de factura calculado en float puede diferir en un céntimo del calculado a mano. Es el prerrequisito directo de las clases 029 y 037.

Idea rectora de la parte

Redondear es una decisión de modelado, no un accidente de la calculadora.

Error a evitar

Sumar porcentajes como si fueran cantidades absolutas.

Conexión con IA

Toda métrica de un modelo (accuracy, loss, learning rate) es una razón, un porcentaje o una escala. Interpretarlas mal es el primer error de un practicante de IA.

Bibliografía de la clase

Archivos de la clase