Floats en Python: guía completa para principiantes

Publicado el: 11/07/2026
Tempo de leitura: 4 minutos
símbolo de PI

Los floats en Python representan números con parte decimal, como 3.14, -0.5 o 1250.00. Se utilizan en medidas, promedios, porcentajes, gráficos, cálculos científicos y muchas otras tareas.

Aunque parecen sencillos, los floats se almacenan normalmente como aproximaciones binarias. Comprender esta limitación ayuda a evitar comparaciones incorrectas y a elegir entre float, Decimal o enteros según las necesidades del proyecto.

Qué es un float

temperature = 21.5
height = 1.82
discount = 0.15

print(type(temperature))

Un número escrito con punto decimal se convierte en float. La notación científica también produce floats:

large = 1.2e6
small = 4.5e-4

print(large)
print(small)

Para comparar esta estructura con los números enteros, consulta la guía de enteros en Python.

Crear y convertir floats

La función float() convierte enteros o cadenas compatibles:

price = float("19.90")
average = float(8)

print(price)
print(average)

Una cadena inválida genera ValueError:

try:
    value = float(input("Número decimal: "))
except ValueError:
    print("Introduce un número válido.")

Las guías de input() en Python y try y except explican cómo validar datos externos.

Operaciones aritméticas

a = 10.5
b = 2.0

print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a ** b)
print(a % b)

Cuando una operación combina un entero y un float, el resultado suele ser un float:

result = 5 + 2.5
print(result)
print(type(result))

La división normal siempre devuelve un float:

print(10 / 2)  # 5.0

La división entera con // redondea hacia menos infinito:

print(10.0 // 3)
print(-10.0 // 3)

Por qué 0.1 + 0.2 no es exactamente 0.3

print(0.1 + 0.2)
# 0.30000000000000004

Esto no es un error exclusivo de Python. Muchas fracciones decimales no tienen una representación binaria finita. El sistema almacena el valor disponible más cercano.

La guía oficial sobre aritmética de punto flotante explica este comportamiento.

Comparar floats correctamente

La igualdad directa puede fallar después de varios cálculos:

total = 0.1 + 0.2
print(total == 0.3)

Cuando la igualdad aproximada sea apropiada, utiliza math.isclose():

import math

total = 0.1 + 0.2
print(math.isclose(total, 0.3))

Puedes definir tolerancias:

math.isclose(
    a,
    b,
    rel_tol=1e-9,
    abs_tol=1e-12,
)

La tolerancia absoluta es especialmente importante cerca de cero.

Redondear valores

value = 12.34567

print(round(value))
print(round(value, 2))

Python utiliza una estrategia de redondeo al par en ciertos empates. Además, el float almacenado puede estar ligeramente por encima o por debajo del valor decimal escrito.

print(round(2.5))
print(round(3.5))

Formatear para mostrar no es lo mismo que modificar el valor:

price = 19.9876
print(f"${price:.2f}")

La guía de f-strings para números y moneda presenta decimales, porcentajes y alineación.

Por qué no siempre conviene usar float para dinero

Pequeñas aproximaciones pueden acumularse en cálculos financieros. Para aritmética decimal exacta utiliza Decimal, creando los valores desde cadenas:

from decimal import Decimal

price = Decimal("19.90")
quantity = Decimal("3")
total = price * quantity

print(total)

Evita crear un Decimal desde un float cuando la exactitud decimal sea importante:

exact = Decimal("0.1")
from_float = Decimal(0.1)

La documentación oficial de Decimal explica precisión, contextos y modos de redondeo.

Valores especiales

Los floats pueden representar infinito y NaN:

positive_infinity = float("inf")
negative_infinity = float("-inf")
not_a_number = float("nan")

Comprueba estos valores con math:

import math

print(math.isinf(positive_infinity))
print(math.isnan(not_a_number))
print(math.isfinite(12.5))

NaN no es igual a sí mismo:

nan = float("nan")
print(nan == nan)

Utiliza siempre math.isnan() para detectarlo.

Funciones útiles del módulo math

import math

value = 7.8

print(math.floor(value))
print(math.ceil(value))
print(math.trunc(value))
print(math.sqrt(81.0))
print(math.fsum([0.1, 0.1, 0.1]))

math.fsum() suele ofrecer una suma más precisa para secuencias de floats.

Formatear para el usuario

distance = 12345.6789
ratio = 0.4236

print(f"Distancia: {distance:,.2f} km")
print(f"Progreso: {ratio:.1%}")
print(f"Notación científica: {distance:.3e}")

El número de decimales debe responder al dominio. Una medida puede requerir tres posiciones, mientras que un porcentaje puede necesitar una.

Proyecto: calculadora de notas

def read_grade(prompt):
    while True:
        try:
            grade = float(input(prompt))
        except ValueError:
            print("Introduce una nota numérica.")
            continue

        if not 0 <= grade <= 100:
            print("La nota debe estar entre 0 y 100.")
            continue

        return grade


grades = [
    read_grade("Primera nota: "),
    read_grade("Segunda nota: "),
    read_grade("Tercera nota: "),
]

average = sum(grades) / len(grades)
print(f"Promedio: {average:.2f}")

Este proyecto combina conversión, validación, listas, funciones y formato. La guía de funciones en Python ayuda a crear validadores reutilizables.

Conversión de medidas

def celsius_to_fahrenheit(celsius):
    return celsius * 9 / 5 + 32


def kilometers_to_miles(kilometers):
    return kilometers * 0.621371


celsius = 24.5
kilometers = 10.0

print(
    f"{celsius:.1f} °C = "
    f"{celsius_to_fahrenheit(celsius):.1f} °F"
)
print(
    f"{kilometers:.1f} km = "
    f"{kilometers_to_miles(kilometers):.2f} millas"
)

Convertir entre int y float

int() trunca hacia cero; no redondea:

print(int(9.9))
print(int(-9.9))

Utiliza round(), floor() o ceil() cuando su comportamiento sea el requerido.

Floats en análisis de datos

NumPy y Pandas utilizan floats para medidas y valores ausentes en muchos contextos. Antes de comparar, agregar o exportar, revisa la presencia de NaN, infinitos y errores de conversión. La guía de análisis de datos con Pandas y NumPy muestra un flujo completo.

Errores frecuentes

  • Comparar resultados calculados con ==.
  • Usar float para importes que requieren exactitud decimal.
  • Confundir int() con redondeo.
  • Redondear resultados intermedios demasiado pronto.
  • Ignorar NaN e infinito en datos importados.
  • No validar texto antes de convertirlo.
  • Suponer que dos decimales son adecuados para cualquier medida.

Conclusión

Los floats permiten cálculos decimales y científicos, pero son aproximaciones binarias. Aprende a convertir, comparar con tolerancias, formatear, detectar valores especiales y elegir Decimal cuando el dominio exija exactitud. La mejor representación depende del problema, no de una preferencia universal.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Manipulação e formatação de strings em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Strings en Python: guía completa para principiantes

    Aprende strings en Python: creación, índices, slicing, métodos, búsqueda, formato, Unicode, codificación y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    código Python de uma tupla com o texto separado formando a frase "O que são tuplas?"
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Tuplas en Python: guía completa para principiantes

    Aprende tuplas en Python: creación, índices, slicing, inmutabilidad, desempaquetado, métodos, NamedTuple y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    notebook mostrando tela a teclado
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Entrada y salida en Python: guía completa

    Aprende entrada y salida en Python con input(), print(), conversiones, validación, f-strings, archivos y argumentos del terminal.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Dicionário com o logo do Python em uma página e o texto 'Dicionário Python'
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Diccionarios en Python: guía completa para principiantes

    Aprende diccionarios en Python: claves, valores, métodos, recorridos, estructuras anidadas, comprensiones, copias y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    números inteiros sendo mostrados
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Enteros en Python: guía completa para principiantes

    Aprende enteros en Python con operaciones, división, conversiones, bases numéricas, valores grandes, range, bits y ejemplos prácticos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Definição e uso de funções com def em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Funciones en Python: guía completa para principiantes

    Aprende funciones en Python con def, parámetros, return, valores predeterminados, *args, **kwargs, scope, type hints, docstrings y pruebas.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026