Conversor de números romanos
Passe de números comuns para romanos e vice-versa: 2026 vira MMXXVI, e MMXXVI volta a ser lido como 2026. Grafias fora do padrão são recusadas em vez de adivinhadas, então datas e seções ficam certas. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Valor
- 1
- Modo de cálculo
- To roman
- Resultado
- I
- Valor de entrada
- 1
grátis no seu navegador
Sete letras e seis pares de subtração
Os algarismos romanos usam sete letras: I vale 1, V vale 5, X vale 10, L vale 50, C vale 100, D vale 500 e M vale 1000. Seis pares colocam uma letra menor antes de uma maior para subtraí-la: IV é 4, IX é 9, XL é 40, XC é 90, CD é 400 e CM é 900. Para escrever um número, o conversor pega o maior desses treze valores que ainda cabe, escreve o símbolo, subtrai e repete até não sobrar nada. É assim que 2026 vira MMXXVI, e é por isso que o resultado é sempre a forma padrão mais curta.
Onde os romanos ainda aparecem
Eles marcam anos de publicação e de filmes em créditos, placas e folhas de rosto, e numeram seções e cláusulas como I, II, III em roteiros e contratos. Lê-los de volta como números ajuda a ordenar referências antigas. Não existe algarismo para o zero, e o maior valor que os símbolos clássicos conseguem escrever é 3999, MMMCMXCIX. Na leitura, qualquer grafia fora da forma padrão, como IIII ou IC, é recusada em vez de adivinhada, para que um erro de digitação nunca vire, em silêncio, um número errado.
Tratamento da entrada e a faixa 1..3999
Não há zero nem algarismo para ele, e 3999 (MMMCMXCIX) é o maior valor expressável com os símbolos clássicos. A resposta repete a cadeia de entrada normalizada e o resultado convertido.
Casos de uso
Anos de direitos autorais e edições
Represente anos de publicação ou de filmes como algarismos romanos (por exemplo, 2026 para MMXXVI) em créditos, chapas e páginas de rosto.
Numeração de tópicos e cláusulas
Gere marcadores de seção no estilo I, II, III, ou interprete referências antigas numeradas em romano de volta em inteiros para ordenação.
Perguntas frequentes
Qual faixa de números é suportada?
Inteiros de 1 a 3999 inclusive. Não há algarismo para zero e 3999 (MMMCMXCIX) é o maior valor clássico.
Por que o 4 é escrito IV e não IIII?
Porque o conversor sempre escreve a forma padrão mais curta, com pares de subtração em que uma letra menor colocada antes de uma maior é subtraída. Assim saem IV para 4, IX para 9, XL para 40 e CM para 900.
Existe algarismo romano para o zero?
Não. Os algarismos romanos não têm símbolo para o zero, então o menor valor que você pode converter é 1. Zero, números negativos e frações ficam fora da faixa e são recusados.
Posso digitar o número romano em minúsculas?
Sim. O texto é passado para maiúsculas antes da leitura, então mmxxvi e MMXXVI dão o mesmo resultado. O que importa é a grafia: uma forma fora do padrão, como IIII, é recusada.
Como um algarismo romano é lido de volta como número?
Da esquerda para a direita: primeiro se procura um par de subtração de duas letras, como CM ou IX, e, se não houver, uma letra só; depois os valores são somados. Isso ajuda a ordenar referências antigas numeradas I, II, III.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/roman \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"to_roman","value":"2026"}'const res = await fetch("https://api.kit.forhosting.com/dev/roman", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "to_roman",
"value": "2026"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/roman",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "to_roman",
"value": "2026"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/roman", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"to_roman","value":"2026"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"to_roman","value":"2026"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/roman", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"mode": "to_roman",
"value": "2026"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.roman",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
min | 1 |
max | 3999 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Converte entre inteiros arábicos (1 a 3999) e algarismos romanos nas duas direções. mode=to_roman transforma um número em sua cadeia romana; mode=to_arabic interpreta uma cadeia romana de volta em um número e rejeita qualquer grafia não canônica.
Conversão subtrativa gulosa
Esse esquema guloso é a razão pela qual a saída é sempre a forma mínima padrão com a notação subtrativa correta, em vez da repetição aditiva. Ambas as direções usam uma única tabela de valores ordenada com treze pares de símbolos: M=1000, CM=900, D=500, CD=400, C=100, XC=90, L=50, XL=40, X=10, IX=9, V=5, IV=4, I=1. mode=to_roman percorre essa tabela do maior para o menor, anexando cada símbolo enquanto o valor restante for pelo menos o seu peso e subtraindo conforme avança, então 2026 vira MMXXVI e 4 vira IV em vez de IIII. mode=to_arabic varre a cadeia da esquerda para a direita, correspondendo um par subtrativo de dois caracteres (como CM ou IX) antes de recorrer a um símbolo único, somando os pesos.
Tratamento da entrada e a faixa 1..3999
O campo value é documentado como uma cadeia, mas to_roman também aceita um inteiro simples ou uma cadeia só de dígitos, que ele converte com Number antes de verificar que é um inteiro dentro de 1..3999; qualquer coisa fora dessa faixa inclusiva lança invalid_input. Para to_arabic, o value deve ser uma cadeia; ele é primeiro convertido para maiúsculas, então caixa mista ou minúscula como "mmxxvi" é aceita, e depois filtrado para que apenas as letras M, D, C, L, X, V e I possam aparecer.
Validação canônica estrita na interpretação
Essa verificação de ida e volta rejeita cadeias malformadas mas somáveis, como IIII, VV ou IC, que interpretadores ingênuos aceitariam silenciosamente, porque apenas a única grafia canônica sobrevive à recodificação. to_arabic faz mais do que somar símbolos: após interpretar, ele recodifica o número com to_roman e exige que o resultado seja exatamente igual à entrada em maiúsculas, e também confirma que o valor interpretado cai em 1..3999. Qualquer caractere estranho, uma cadeia vazia ou um valor fora da faixa levanta um erro invalid_input tipado em vez de uma quebra não tipada.
Casos de integração
Validar algarismos informados pelo usuário
Use to_arabic para aceitar uma cadeia romana apenas se estiver escrita na forma canônica estrita, rejeitando IIII ou IC.
Perguntas técnicas
Ela aceita entrada romana em minúsculas?
Sim. to_arabic converte a cadeia para maiúsculas primeiro, então "mmxxvi" é tratado igual a "MMXXVI".
Ela aceita IIII ou IC?
Não. Após interpretar, ela recodifica o número e exige uma correspondência exata, então apenas a única grafia canônica é válida; formas não padrão levantam invalid_input.
Posso passar o número como cadeia?
Para to_roman, sim: uma cadeia só de dígitos como "1990" é convertida em número. to_arabic espera uma cadeia de letras romanas.
É gratuito e quanto custa a API?
O widget do navegador é gratuito; a API usa saldo KIT pré-pago a partir de US$ 0,002, com tarefas que falham não sendo cobradas.