Números, Booleanos e Aritmética
Python fornece inteiros de tamanho ilimitado, floats binários e tipos numéricos exatos para domínios que não podem tolerar erros de arredondamento. Booleanos participam da aritmética porque são subclasses de int.
Busque em todas as páginas da documentação
Python fornece inteiros de tamanho ilimitado, floats binários e tipos numéricos exatos para domínios que não podem tolerar erros de arredondamento. Booleanos participam da aritmética porque são subclasses de int.
from decimal import Decimal
price = Decimal("19.99")
tax = Decimal("0.0825")
total = price * (1 + tax)
a, b = 7, 3
print(a / b, a // b, a % b, divmod(a, b))Quando usar isso:
if e whilefrom decimal import Decimal, ROUND_HALF_UP
from fractions import Fraction
def invoice_line(unit_price: str, qty: int, tax_rate: str) -> Decimal:
price = Decimal(unit_price)
tax = Decimal(tax_rate)
subtotal = price * qty
tax_amount = (subtotal * tax).quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
return subtotal + tax_amount
def float_trap() -> None:
print(0.1 + 0.2) # 0.30000000000000004
print(Fraction(1, 10) + Fraction(2, 10)) # 3/10 exato
def truthiness() -> None:
for value in [0, 1, "", "x", [], [0], None]:
print(repr(value), "->", bool(value))
if __name__ == "__main__":
print(invoice_line("19.99", 3, "0.0825"))
float_trap()
truthiness()O que isso demonstra:
Decimal construído a partir de strings evita artefatos binários de floatquantize controla o arredondamento para exibição de moedaFraction mantém números racionais exatosNone são falsyint; True == 1, False == 0.| Operador | Significado | Notas |
|---|---|---|
/ | Divisão verdadeira | Sempre retorna float |
// | Divisão inteira (floor) | Arredonda em direção ao infinito negativo |
% | Módulo | O sinal segue o divisor em Python 3 |
** | Potência | Inteiros grandes podem crescer rapidamente |
& | ^ << >> | Bitwise | Apenas em inteiros |
import math
math.isclose(0.1 + 0.2, 0.3) # prefira sobre == para floats
int("ff", 16) # conversão de base
float("nan") != float("nan") # NaN não é igual a si mesmo0.1 + 0.2 == 0.3 é False. Correção: math.isclose ou Decimal.-7 // 3 é -3, não -2. Correção: Lembre-se de arredondar para -inf.Decimal(0.1) herda a imprecisão do float. Correção: Decimal("0.1").True + True é igual a 2. Correção: Não use booleanos em somas, a menos que intencional.int ou use Decimal.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
Decimal | Dinheiro, impostos, faturamento | Matemática vetorial científica pesada |
Fraction | Matemática racional exata | Necessita de funções transcendentais |
numpy.float64 | Arrays numéricos | Aritmética simples de script |
Apenas int | Contagem, indexação | Necessita de valores fracionários |
Floats binários não podem representar 0.1 exatamente. A soma é próxima, mas não idêntica - use isclose ou Decimal.
Decimal para moeda e onde quer que os humanos esperem arredondamento em base-10. float para ciência, ML e desempenho.
Objetos definem verdade através de __bool__ ou __len__. Contêineres vazios e números zero são falsy; a maioria dos outros objetos são truthy.
from decimal import Decimal, ROUND_HALF_UP
Decimal("2.675").quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)Ele arredonda para baixo (floor): -7 // 3 é -3 porque floor(-2.33) é -3.
bool é subclasse de int. isinstance(True, int) é True, mas use booleanos apenas para lógica, não para contagem.
Envolva int() / Decimal() em try/except ValueError, ou valide com uma biblioteca de esquema nos limites da API.
Retorna (a // b, a % b) em uma única chamada - comum para paginação e aritmética de relógio.
Sim em Python 3 - o limite prático é a memória. Criptografia e matemática de bigint dependem disso.
Eles operam em padrões de bits de inteiros - úteis para flags, máscaras e protocolos de baixo nível.
Versões do Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ e uv 0.6+.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026