Uma nota rápida sobre o zero
O sistema de numeração romano não possui um símbolo para zero. Se você procurar uma tabela completa de numerais romanos de 0 a 100, vai perceber que o "0" simplesmente não existe nesse sistema. Os romanos tinham palavras para "nada" ou "ausência" (como "nulla"), mas nunca desenvolveram um algarismo. Então, na prática, quando alguém pede numerais romanos de 0 a 100, a lista começa realmente no 1. Isso é a primeira coisa que pega todo mundo de surpresa.
Como construir os numerais romanos de 0 a 100
A mecânica básica é simples: você combina sete letras maiúsculas, cada uma com um valor fixo, e as soma. As letras são I (1), V (5), X (10), L (50), C (100). Para chegar a 100 você usa o C. A regra de ouro é que, quando um numeral menor vem antes de um maior, você subtrai. Quando vem depois, você soma. O resto é montagem. De 1 a 10 funciona assim: I, II, III, IV, V, VI, VII, VIII, IX, X. Os quatro primeiros são adição pura. O IV é a subtração — I antes de V — e o IX segue o mesmo padrão. A partir daí, a lógica se repete em blocos de dez.
De 11 a 20, você pega o X e adiciona os suffixos de 1 a 10: XI, XII, XIII, XIV, XV, XVI, XVII, XVIII, XIX, XX. O 14 continua sendo XIV, não IIXV ou qualquer aberração. O 19 é XIX, porque é 10 mais (10 menos 1). Nada de IVX; isso não existe. Os dezenos principais são apenas LX (60), LXX (70), LXXX (80), XC (90) e C (100). O XC é o último caso de subtração no rango: X antes de C significa menos 10 de 100. O XCV seria 95, mas você monta assim: XC + V. Nunca VC, porque V não pode ser usado como prefixo subtrativo — só I, X e C podem preceder um numeral maior.
A estrutura na prática
Aqui está uma tabela direta. Eu organizo assim porque é mais fácil consultar do que decorar. 1 = I
2 = II
3 = III
4 = IV
5 = V
6 = VI
7 = VII
8 = VIII
9 = IX
10 = X
11 = XI
12 = XII
13 = XIII
14 = XIV
15 = XV
16 = XVI
17 = XVII
18 = XVIII
19 = XIX
20 = XX 21 = XXI
22 = XXII
23 = XXIII
24 = XXIV
25 = XXV
26 = XXVI
27 = XXVII
28 = XXVIII
29 = XXIX
30 = XXX
31 = XXXI
32 = XXXII
33 = XXXIII
34 = XXXIV
35 = XXXV
36 = XXXVI
37 = XXXVII
38 = XXXVIII
39 = XXXIX
40 = XL 41 = XLI
42 = XLII
43 = XLIII
44 = XLIV
45 = XLV
46 = XLVI
47 = XLVII
48 = XLVIII
49 = XLIX
50 = L
51 = LI
52 = LII
53 = LIII
54 = LIV
55 = LV
56 = LVI
57 = LVII
58 = LVIII
59 = LIX
60 = LX 61 = LXI
62 = LXII
63 = LXIII
64 = LXIV
65 = LXV
66 = LXVI
67 = LXVII
68 = LXVIII
69 = LXIX
70 = LXX
71 = LXXI
72 = LXXII
73 = LXXIII
74 = LXXIV
75 = LXXV
76 = LXXVI
77 = LXXVII
78 = LXXVIII
79 = LXXIX
80 = LXXX 81 = LXXXI
82 = LXXXII
83 = LXXXIII
84 = LXXXIV
85 = LXXXV
86 = LXXXVI
87 = LXXXVII
88 = LXXXVIII
89 = LXXXIX
90 = XC
91 = XCI
92 = XCII
93 = XCIII
94 = XCIV
95 = XCV
96 = XCVI
97 = XCVII
98 = XCVIII
99 = XCIX
100 = C
👉 Clique no botão abaixo para saber mais sobre o assunto!
Tabela completa de numerais romanos de 0 a 100
Para o zero, anote simplesmente "sem representação" ou use a palavra "nulla" se precisar de algo concreto em um contexto histórico. A partir do 1, a tabela acima cobre tudo. Se você quer um arquivo para imprimir ou colar em planilhas, pode copiar a lista inteira. Não tem segredo.
O que ninguém conta sobre numeração romana
A primeira coisa contraintuitiva: a repetição máxima é três. Você escreve III, não IIII. Mas ai vem a pegadinha — em relógios e placas monumentais, é extremely comum ver o 4 como IIII ao invés de IV. Não é errado, é tradição. Relojoeiros romanos do século XV já faziam isso por simetria visual com o V (que está oposto ao IIII no mostrador). Em contextos formais, IV é a forma correta. Em contexts decorativos, IIII é aceitável e muito frequente. A segunda coisa: há limites práticos de compactação. Números como 88 viram LXXXVIII — oito letras, cinco delas repetidas. Isso funciona em paredes de pedra, mas se você estiver gerando milhares de linhas automaticamente, números entre 70 e 89 vão bloat seu layout. Minha recomendação prática é usar numeração arábica para listas longas e reservar os romanos para títulos de capítulos, atos, datas em documentos formais e coisas assim.
Um problema real que eu tive
Eu trabalhei numa automação de numeração de anexos jurídicos onde precisávamos gerar numerais romanos de 0 a 100 via script Python para um sistema legado. A biblioteca que o pessoal tinha configured lá usava uma lógica ingênua que produzia VIIII em vez de IX para o 9. O código basicamente subtrahia da direita pra esquerda sem respeitar a hierarquia subtrativa. Resultado: outputs como MCMVIC pour 1906, que é absurdo. O fix foi simples mas exigiu atenção. Em vez de iterar pelos valores decrescentes e subtrair tudo que coubesse, eu fiz uma função que verifica explicitamente os casos subtrativos antes das adições. Os pares subtrativos válidos no rango até 100 são: IV (4), IX (9), XL (40), XC (90). Você testa esses quatro antes de tentar qualquer outra coisa. Com essa ordem, o 99 vira XCIX, não IC — e IC seria uma construção que nunca foi usada por romanos.
Também adicionei uma validação de saída: nenhuma letra pode se repetir mais de três vezes seguidas, e V, L e C nunca aparecem como prefixo subtrativo. Isso captura a maioria dos edge cases sem precisar de uma tabela lookup de 100 itens.
Pitfalls comuns
Usar subtração onde não deve. IC não é 99. Apenas I, X e C podem funcionar como prefixos subtrativos, e só diante de certos alvos. I vai antes de V e X. X vai antes de L e C. C vai antes de D e M. Nada mais. Repetir V, L ou C mais de uma vez. Você nunca vê VV, LL ou CC. Se precisa de 10, é X, não VV. Se precisa de 100, é C. Se precisa de 60, é LX, não LXL ou algo do gênero.
Esquecer que 4 e 9 são os únicos padrões subtrativos nos units e tens. 14 é XIV, não IIX. 44 é XLIV, não IIXL. A subtração só ocorre nos valores-base de cada ordem: 4, 9, 40, 90. O resto é sempre adição.
Quando NÃO usar numerais romanos
Se você está digitando dados, fazendo cálculos ou passando números entre sistemas, use arábicos. Romani são frágeis pra isso. Não há notação posicional, então adicionar 47 a 89 manualmente é um exercício de dor de cabeça. Eu já vi gente levar 20 minutos pra somar MCMLXXXVII mais CDXXIII à mão. Com arábicos, leva três segundos e não erra. Se o seu público inclui pessoas que não cresceram lidando com romanos no dia a dia — o que é a maioria — a legibilidade cai bastante a partir de 60. LXXIII já exige pausa. CMLXXXVIII (988) é um nó. Para lists acima de 50 itens, arábicos são objetivamente mais funcionais.
Como gerar sua própria lista rapidamente
Se você precisa de numerais romanos de 0 a 100 num arquivo pronto, existem duas opções realistas. A primeira é copiar a tabela que eu compilei acima — leva 30 segundos e é infalível. A segunda é rodar um script curto. Um loop simples que mapeia os pares valor-símbolo na ordem correta gera tudo em milissegundos. Para quem prefere baixar algo pronto, a Wikipedia tem tabelas completas e verificadas, e repositórios no GitHub como romans ou roman-numerals oferecem funções prontas em Python, JavaScript e C. A desvantagem é que algumas bibliotecas herdadas reproduzem o erro do VIIII que eu citei. Sempre verifique a saída contra a tabela acima para os casos 4, 9, 40 e 90. Se esses quatro estiverem certos, o resto também está.
Para uso cotidiano — placas, certificados, numeração de capítulos — a lista manual acima resolve. Para integração em sistemas, vale a pena implementar a validação que descrevi, que elimina o tipo de bug que eu encontrei no projeto jurídico. Custa quase nada e evita correções manuais depois.