Quando você começa a aprender Python, logo descobre que trabalhar com números é uma das tarefas mais comuns na programação. Entre os tipos de dados em Python, o float se destaca como essencial para lidar com valores decimais e cálculos mais precisos.
Neste artigo, você vai entender o que é float, como ele funciona internamente, suas diferenças em relação aos inteiros e as melhores práticas para utilizá-lo em seus projetos. Prepare-se para dominar esse tipo de dado fundamental!
Confira este vídeo explicativo sobre números em Python do nosso canal, que complementa muito bem o conteúdo deste artigo:
O Que São Números de Ponto Flutuante
Float é a abreviação de floating point, que em português significa ponto flutuante. Esse tipo de dado representa números reais, ou seja, valores que podem ter casas decimais. Diferente dos números inteiros, que são completos e sem frações, os floats permitem representar quantidades mais específicas.
Imagine que você precisa calcular o preço de um produto com desconto. O valor final provavelmente terá centavos, certo? É aí que o float entra em ação. Ele é perfeito para situações que exigem precisão decimal, como cálculos financeiros, medições científicas ou operações matemáticas complexas.
Em Python, qualquer número escrito com ponto decimal é automaticamente tratado como float. Por exemplo, 3.14, 0.5 ou -2.75 são todos valores do tipo float. Até mesmo 3.0 é considerado float, mesmo que matematicamente seja igual ao inteiro 3.
Como Declarar e Usar Float no Python
Criar uma variável float em Python é extremamente simples. Você não precisa declarar explicitamente o tipo, pois Python faz isso automaticamente. Veja alguns exemplos práticos:
preco = 19.99
temperatura = -5.3
pi = 3.14159
peso = 75.0Note que usamos o ponto (.) como separador decimal, nunca a vírgula. Isso é um padrão internacional na programação e vale para praticamente todas as linguagens.
Você também pode criar floats usando notação científica, que é útil para números muito grandes ou muito pequenos:
velocidade_luz = 3e8 # 3 x 10^8 = 300000000.0
massa_eletron = 9.11e-31 # 0.000000000000000000000000000000911O “e” na notação científica significa “vezes dez elevado a”. É uma forma compacta de escrever números com muitos zeros.
Diferenças Entre Float e Int
Embora ambos sejam tipos numéricos, float e int têm características distintas que afetam como você deve usá-los. A diferença mais óbvia é que int representa números inteiros, enquanto float representa números decimais.
Quando você realiza divisão entre dois inteiros em Python 3, o resultado é sempre um float:
resultado = 10 / 3
print(resultado) # 3.3333333333333335
print(type(resultado)) # <class 'float'>Se você quiser divisão inteira, use o operador //:
resultado = 10 // 3
print(resultado) # 3
print(type(resultado)) # <class 'int'>Outra diferença importante está no uso de memória. Floats geralmente ocupam mais espaço que inteiros devido à complexidade de armazenar valores decimais. Além disso, operações com floats podem ser ligeiramente mais lentas.
Operações Matemáticas com Float
Python oferece diversos operadores para trabalhar com floats. As operações básicas funcionam exatamente como você espera:
a = 10.5
b = 3.2
soma = a + b # 13.7
subtracao = a - b # 7.3
multiplicacao = a * b # 33.6
divisao = a / b # 3.28125
potencia = a ** 2 # 110.25Você pode misturar inteiros e floats nas operações. Python automaticamente converte o resultado para float quando necessário:
resultado = 10 + 5.5 # 15.5 (float)
resultado = 3 * 2.0 # 6.0 (float)Para operações mais avançadas, você pode usar o módulo math, que oferece funções como raiz quadrada, seno, cosseno e logaritmos.
Conversão Entre Tipos Numéricos
Às vezes você precisa converter explicitamente entre float e int. Python fornece funções simples para isso:
# Convertendo int para float
numero_inteiro = 42
numero_float = float(numero_inteiro) # 42.0
# Convertendo float para int (perde as casas decimais)
numero_float = 3.99
numero_inteiro = int(numero_float) # 3 (não arredonda, apenas trunca)Note que ao converter float para int, Python simplesmente remove as casas decimais, não arredonda. Se você quer arredondamento, use a função round():
valor = 3.7
arredondado = round(valor) # 4
valor = 3.14159
arredondado = round(valor, 2) # 3.14 (arredonda para 2 casas decimais)Você também pode converter strings para float, desde que a string contenha um número válido:
texto = "45.67"
numero = float(texto) # 45.67Precisão e Limitações do Float
Uma característica importante dos floats é que eles têm precisão limitada. Isso acontece porque os computadores armazenam números em formato binário, e alguns decimais não podem ser representados exatamente.
Veja este exemplo surpreendente:
resultado = 0.1 + 0.2
print(resultado) # 0.30000000000000004Esse comportamento não é um bug do Python, mas sim uma limitação de como números de ponto flutuante funcionam em qualquer linguagem. Para a maioria das aplicações, essa diferença minúscula não importa. Mas em cálculos financeiros ou científicos de alta precisão, você precisa estar ciente disso.
Se você precisa de precisão decimal absoluta, use o módulo decimal:
from decimal import Decimal
valor1 = Decimal('0.1')
valor2 = Decimal('0.2')
resultado = valor1 + valor2
print(resultado) # 0.3 (exato!)Formatação de Números Float
Ao exibir floats, muitas vezes você quer controlar quantas casas decimais aparecem. Python oferece várias formas de formatar números:
preco = 19.99876
# Usando f-strings (recomendado no Python 3.6+)
print(f"Preço: R$ {preco:.2f}") # Preço: R$ 19.99
# Usando format()
print("Preço: R$ {:.2f}".format(preco)) # Preço: R$ 19.99
# Usando operador %
print("Preço: R$ %.2f" % preco) # Preço: R$ 19.99O .2f indica que você quer 2 casas decimais. Você pode ajustar esse número conforme necessário.
Para adicionar separadores de milhares, use:
valor_grande = 1234567.89
print(f"{valor_grande:,.2f}") # 1,234,567.89Comparações com Float
Devido à imprecisão dos floats, comparar valores de igualdade pode gerar resultados inesperados. Veja:
a = 0.1 + 0.2
b = 0.3
print(a == b) # FalseA melhor prática é usar uma margem de tolerância ao comparar floats:
tolerancia = 1e-9
diferenca = abs(a - b)
if diferenca < tolerancia:
print("Os números são praticamente iguais")
else:
print("Os números são diferentes")Python 3.5+ oferece a função math.isclose() que facilita essas comparações:
import math
a = 0.1 + 0.2
b = 0.3
print(math.isclose(a, b)) # TrueValores Especiais Float
Python suporta alguns valores especiais para floats que representam situações matemáticas específicas:
# Infinito positivo
infinito_positivo = float('inf')
# Infinito negativo
infinito_negativo = float('-inf')
# Not a Number (não é um número)
nao_numero = float('nan')Esses valores aparecem em operações matemáticas especiais:
resultado = 1.0 / 0.0 # Gera erro em Python
resultado = float('inf') * 2 # inf
resultado = float('inf') - float('inf') # nanVocê pode verificar esses valores usando funções do módulo math:
import math
print(math.isinf(float('inf'))) # True
print(math.isnan(float('nan'))) # True
print(math.isfinite(42.0)) # TrueAplicações Práticas do Float
Os floats são fundamentais em diversas áreas da programação. Em análise de dados, você usa floats constantemente para trabalhar com médias, porcentagens e estatísticas.
Na programação financeira, floats ajudam a calcular juros, descontos e taxas. Embora o módulo decimal seja mais preciso para dinheiro, floats funcionam bem para a maioria dos cálculos:
preco_original = 100.00
desconto_percentual = 15.5
valor_desconto = preco_original * (desconto_percentual / 100)
preco_final = preco_original - valor_desconto
print(f"Preço final: R$ {preco_final:.2f}") # Preço final: R$ 84.50Em jogos e gráficos, floats representam posições, velocidades e acelerações de objetos. Na ciência de dados, com bibliotecas como Pandas e NumPy, floats são o tipo padrão para dados numéricos.
Erros Comuns ao Trabalhar com Float
Conhecer os erros comuns ajuda você a evitá-los. Um erro frequente é assumir que floats são sempre precisos:
# Evite isso:
if (0.1 + 0.2) == 0.3:
print("Iguais") # Não vai executar
# Prefira isso:
import math
if math.isclose(0.1 + 0.2, 0.3):
print("Praticamente iguais") # ExecutaOutro erro é não arredondar valores ao exibir preços:
# Evite:
preco = 19.999
print(f"Preço: R$ {preco}") # R$ 19.999
# Prefira:
print(f"Preço: R$ {preco:.2f}") # R$ 20.00Também é comum esquecer que divisão sempre retorna float no Python 3:
quantidade = 10 / 2 # 5.0, não 5
# Se você quer int, use //
quantidade = 10 // 2 # 5Boas Práticas ao Usar Float
Para usar floats de forma eficiente, siga estas recomendações. Primeiro, sempre que possível, use f-strings para formatação, pois são mais legíveis e rápidas.
Quando trabalhar com dinheiro ou valores que exigem precisão absoluta, considere usar o módulo decimal. Para comparações, prefira math.isclose() ao invés do operador de igualdade direto.
Documente seus cálculos, especialmente quando envolvem conversões ou arredondamentos. Isso ajuda outros desenvolvedores (e você mesmo no futuro) a entender o código:
def calcular_desconto(preco, percentual):
"""
Calcula o preço com desconto.
Args:
preco (float): Preço original do produto
percentual (float): Percentual de desconto (0-100)
Returns:
float: Preço final com desconto aplicado
"""
desconto = preco * (percentual / 100)
preco_final = preco - desconto
return round(preco_final, 2) # Arredonda para 2 casas decimaisUse constantes para valores importantes e dê nomes descritivos:
PI = 3.14159265359
TAXA_JUROS_MENSAL = 0.015
DESCONTO_MAXIMO = 0.30
# Melhor que usar números mágicos no código
area = PI * raio ** 2Performance e Otimização
Embora Python seja eficiente com floats, algumas práticas podem melhorar a performance do seu código. Se você está fazendo muitos cálculos numéricos, use NumPy, que é otimizado para operações com arrays.
Evite conversões desnecessárias entre tipos. Cada conversão consome recursos:
# Menos eficiente
for i in range(1000):
resultado = float(i) * 2.5
# Mais eficiente
multiplicador = 2.5
for i in range(1000):
resultado = i * multiplicador # Python converte automaticamentePara cálculos intensivos, considere usar operações vetorizadas com NumPy ao invés de loops tradicionais.
Perguntas Frequentes (FAQ)
1. Qual a diferença entre float e int em Python?
Float representa números decimais, enquanto int representa números inteiros. Floats ocupam mais memória e podem ter imprecisões em cálculos.
2. Por que 0.1 + 0.2 não é exatamente 0.3 em Python?
Devido à forma como computadores armazenam números em binário, alguns decimais não podem ser representados com precisão absoluta. Use math.isclose() para comparações.
3. Como converter float para int sem perder precisão?
Não é possível converter sem perder as casas decimais. Use round() antes de converter se quiser arredondamento, ou int() se quiser apenas truncar.
4. Devo usar float ou Decimal para cálculos com dinheiro?
Para cálculos financeiros críticos, use o módulo Decimal. Para a maioria das aplicações, float com arredondamento adequado funciona bem.
5. Como arredondar um float para 2 casas decimais?
Use round(numero, 2) para arredondar ou f”{numero:.2f}” para formatar na exibição sem alterar o valor original.
6. Floats podem ser usados como chaves de dicionário?
Sim, mas não é recomendado devido à imprecisão. Prefira usar inteiros ou strings como chaves de dicionários.
7. Qual o maior número float que Python suporta?
O maior float é aproximadamente 1.8 x 10^308. Valores maiores retornam float(‘inf’).
8. Como verificar se uma variável é do tipo float?
Use type(variavel) == float ou isinstance(variavel, float) para verificação de tipo.
9. É possível fazer operações matemáticas misturando float e int?
Sim, Python converte automaticamente o resultado para float quando você mistura os tipos em operações.
10. Como formatar floats com separador de milhares?
Use f”{numero:,.2f}” para adicionar vírgulas como separadores de milhares em números formatados.
11. Float tem limite de casas decimais?
Floats têm precisão limitada de aproximadamente 15-17 dígitos significativos. Para mais precisão, use o módulo Decimal.
12. Como resolver problemas de precisão em loops com floats?
Evite acumular erros usando incrementos inteiros e convertendo depois, ou use Decimal para operações que exigem precisão absoluta.








