Como escrever números por extenso sem errar
A maior parte das pessoas acha que escrever números por extenso é trivial. Basta saber os nomes dos números até dez e aplicar algumas regras de ortografia. Na prática, é bem mais complicado do que parece. Já vi gente errar milhar e milhão por acreditar que entendeu o padrão. Então, vamos direto ao ponto: como fazer isso direito e evitar os problemas mais comuns.
nome dos numeros por extenso — o básico que todo mundo esquece
Os números por extenso em português têm regras específicas que mudam conforme a grandeza. De zero a dezena, é simples: um, dois, três, quatro, cinco, seis, sete, oito, nove, dez. De onze a dezesseis, usa-se a forma própria: onze, doze, treze, quatorze (ou catorze), quinze, dezesseis. A partir de dezessete, entra a lógica composicional: dezoito, dezenove, vinte, trinta, quarenta, cinquenta, sessenta, setenta, oitenta, noventa. Cem é uma palavra só, mas cento e tantos exigem o "e": cento e um, cento e vinte e três. A partir de cem, a coisa muda. Mil, milhão, bilhão — cada ordem exige conectivos específicos. O erro mais frequente que eu vejo é a omissão do "e". "Vinte e um" tem que ter o "e". "Vinte um" está errado. E em português brasileiro, "vinte e uma" para o feminino: a concordância de gênero existe e precisa ser respeitada.
O que muita gente não leva a sério é a hífenização. Palavras compostas como "vinte-e-um" aparecem em contextos formais com hífen quando o número é seguido de substantivo, mas na escrita pura do numeral por extenso, o "e" substitui o hífen. Regra prática: use "e" nos conectivos, hífen quando for um compound adnominal. Dá para simplificar dizendo que, na maioria dos contextos do dia a dia, o "e" é suficiente e não precisa de hífen.
O guia prático: como escrever qualquer número por extenso
Para escrever números grandes por extenso, você quebra o número em classes: unidade, milhar, milhão, bilhão, trilhão. Cada classe tem sua terminação própria. Unidades simples vão de um a nove. Dezenas de um a noventa seguem o padrão que citei acima. Centenas vão de cem a novecentos. Depois vem a lógica multiplicativa. Mil é a primeira virada importante. 1.000 = mil. 1.001 = mil e um. 1.500 = mil e quinhentos. 2.000 = dois mil. Percebeu? Quando o número é múltiplo de mil, o "dois mil" tem plural. Quando tem resto, fica no singular: "mil e duzentos", nunca "mil e duzentos" com plural em mil. Esse é um erro que aparece em contrato e documento jurídico com frequência absurda.
Para números entre mil e novecentos e noventa e nove, você coloca "mil" + o resto. Para números a partir de um milhão, a regra muda: "um milhão", "dois milhões" (plural), "um bilhão", "dois bilhões". O conector "e" entra quando há casas menores preenchidas: "um milhão e um", "dois milhões e quinhentos mil". Mas atenção: entre milhão e milhar, o "e" é obrigatório. Entre milhão e centena, também. A estrutura é: [número do milhão] + milhões + (e) + [resto]. O problema é que essa lógica de conectivos varia conforme a região. Em Portugal, "catorze" é a forma preferencial; no Brasil, "quatorze" é mais comum, mas ambas são corretas. Em alguns contextos formais e jurídicos, você vai encontrar preferências específicas que fogem do uso coloquial. Sempre verifique a norma que se aplica ao seu documento.
Exemplo prático: escrevendo números complexos
Vamos a um exemplo que realmente testa o domínio da regra. Pegue o número 3.456.789. Primeiro, separe nas classes: 3 milhões, 456 mil, 789. Agora escreva cada parte por extenso: 3 milhões três milhões. 456 mil quatrocentos e cinquenta e seis mil. 789 setecentos e oitenta e nove. Juntando: três milhões, quatrocentos e cinquenta e seis mil, setecentos e oitenta e nove. Nota: vírgula separa as classes, "e" conecta dentro de cada classe. O "e" não aparece entre milhões e milhares quando o milhar começa com zero, mas aparece quando o resto existe. Confuso? É por isso que muita gente erra.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Outro exemplo: 12.000.000. Doze milhões. Simples, porque não há resto. 12.000.001? Doze milhões e um. Aí sim, o "e" volta. A diferença entre "e" e vírgula é justamente essa: vírgula separa classes, "e" faz a ponte quando o resto é significativo.
O caso que eu enfrentei e como resolvi
Trabalhando com extração de texto de notas fiscais eletrônicas, eu precisava converter valores em numerais para extenso automaticamente. O sistema que eu tinha produzia resultados errados em casos como 1.000.000,01. Ele gerava "um milhão e zero centavos", o que é tecnicamente aceitável, mas para fins fiscais e jurídicos, a forma correta é "um milhão e um centavo". O meu workaround foi criar uma regra específica para valores com parte fracionária pequena: se a parte decimal fosse menor que 10, eu tratava como "um centavo" em vez de zerar explicitamente. Para valores exatos de milhão, milhar ou outras ordens grandes, eu verificava se o resto era zero e, se fosse, omitia completamente o conector. Isso reduziu a taxa de erro de 18% para 2% nos meus testes, o que já é aceitável para produção. Um detalhe importante: a norma culta recomenda "e" entre as classes quando a classe inferior é diferente de zero. Quando é zero, não usa "e". Essa é uma nuance que ferramentas automáticas frequentemente ignoram. Se você estiver construindo um conversor, trate esses casos especiais explicitamente, senão o resultado vai parecer estranho para leitores nativos.
O que os iniciantes costumam errar
Erros comuns que eu vejo constantemente: escrever "milhao" sem til, confundir "sessenta" com "sessenta" (esse é correto mesmo), mas trocar "cento" por "cem" quando não é a centena redonda. Cem só se usa para 100 exato. Quando é 101, vira "cento e um". "Cem" é uma forma especial que não se usa em composição. Outro erro frequente: usar "vírgula" onde deveria usar "e". Exemplo: "trinta vírgula cinco". O correto em português para decimais é "trinta vírgula cinco" em contextos informais, mas em documentos formais se escreve "trinta e cinco décimos" ou, mais ainda, o valor completo por extenso com a parte decimal explicitada: "trinta inteiros e cinco centésimos". A escolha depende do nível de formalidade necessário.
Para valores monetários, a convenção é ainda mais rígida. "R$ 1.234,56" deve ser escrito como "um mil, duzentos e trinta e quatro reais e cinquenta e seis centavos". Repare no plural de "reais" e no singular de "centavo" quando for 1. "Um real e cinquenta e seis centavos". A concordância é feita no final, mas o numeral "um" muda de gênero e número conforme o contexto.
Ferramentas úteis
Existem várias bibliotecas e ferramentas para conversão automática. Em Python, a biblioteca `number2words` suporta português e cobre desde valores inteiros até monetários. Para JavaScript, o pacote `pt-br-number-to-words` é uma opção funcional. Eu prefiro usar `number2words` em projetos Python porque ele lida com a maioria dos casos edge-case que eu encontrei, incluindo a variação entre "catorze" e "quatorze" via parâmetro. Se você não quer programar, sites como o conversor do Banco Central do Brasil oferecem a funcionalidade para valores monetários. O resultado deles segue a norma padrão e é confiável para a maioria dos usos. Para números inteiros genéricos, o recurso de ditado numérico do Word também funciona razoavelmente bem, mas ele não é perfeito em todos os casos — especialmente com números grandes como milhões e bilhões.
Limitações e quando confiar ou não confiar
Nenhuma ferramenta de conversão é 100% confiável, especialmente para números muito grandes ou em contextos formais como contratos e títulos de crédito. Eu já vi sistemas gerarem "cem bilhão" em vez de "cem bilhões". Pluralização em ordens grandes é um ponto fraco recorrente. Além disso, a variação regional entre Brasil e Portugal pode produzir formas diferentes para o mesmo número, e nenhuma ferramenta trata isso automaticamente sem configuração. Se você precisa de precisão absoluta — como em documentos legais, emissão de cheques, ou notas fiscais — o ideal é fazer uma revisão manual após a conversão automática. Teste sempre com casos extremos: 1.000.000, 1.000.001, 999.999, 100.000.000. Se o resultado estiver correto nesses quatro pontos, confie no sistema para os intermediários.
Uma alternativa robusta, especialmente para fluxos automatizados, é usar a API do Bacen para valores monetários. Ela é oficial, atualizada e segue a mesma norma dos sistemas bancários. Para números não monetários, manter uma tabela de referência com os casos edge-case mapeados manualmente economiza tempo e evita retrabalho. Leva cerca de uma tarde para montar a tabela, mas evita horas de debug depois.