Convertitore di numeri romani
Passi dai numeri comuni ai romani e viceversa: 2026 diventa MMXXVI, e MMXXVI si rilegge come 2026. Le grafie non standard vengono rifiutate invece che indovinate, così date e numeri di sezione restano corretti. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Valore
- 1
- Modalità di calcolo
- To roman
- Risultato
- I
- Valore di input
- 1
gratis nel suo browser
Sette lettere e sei coppie sottrattive
I numeri romani usano sette lettere: I vale 1, V vale 5, X vale 10, L vale 50, C vale 100, D vale 500 e M vale 1000. Sei coppie mettono una lettera minore prima di una maggiore per sottrarla: IV è 4, IX è 9, XL è 40, XC è 90, CD è 400 e CM è 900. Per scrivere un numero, il convertitore prende il più grande di questi tredici valori che ci sta ancora, ne scrive il simbolo, lo sottrae e ripete finché non resta nulla. È così che 2026 diventa MMXXVI, ed è per questo che il risultato è sempre la forma standard più breve.
Dove compaiono ancora i numeri romani
Indicano gli anni di pubblicazione e dei film nei titoli di coda, sulle targhe e nei frontespizi, e numerano sezioni e clausole come I, II, III negli schemi e nei contratti. Rileggerli come cifre aiuta a ordinare vecchi riferimenti. Non esiste un numerale per lo zero, e il valore più alto che i simboli classici possono scrivere è 3999, MMMCMXCIX. In lettura, qualsiasi grafia che non sia la forma standard, come IIII o IC, viene rifiutata invece che indovinata, così un errore di battitura non diventa mai, in silenzio, un numero sbagliato.
Gestione dell'input e l'intervallo 1..3999
Non esiste lo zero né un numerale per esso, e 3999 (MMMCMXCIX) è il valore più grande esprimibile con i simboli classici. La risposta riporta la stringa di input normalizzata e il risultato convertito.
Casi d'uso
Anni di copyright ed edizione
Rappresenti gli anni di pubblicazione o dei film come numeri romani (ad esempio 2026 in MMXXVI) per titoli di coda, targhe e frontespizi.
Numerazione di scalette e clausole
Generi marcatori di sezione in stile I, II, III, oppure analizzi riferimenti numerati in romano di vecchia data riconvertendoli in interi per l'ordinamento.
Domande frequenti
Quale intervallo di numeri è supportato?
Interi da 1 a 3999 inclusi. Non esiste un numerale per lo zero e 3999 (MMMCMXCIX) è il valore classico più grande.
Perché il 4 si scrive IV e non IIII?
Perché il convertitore scrive sempre la forma standard più breve, con coppie sottrattive in cui una lettera minore posta prima di una maggiore viene sottratta. Si ottengono così IV per 4, IX per 9, XL per 40 e CM per 900.
Esiste un numero romano per lo zero?
No. I numeri romani non hanno un simbolo per lo zero, quindi il valore più piccolo che può convertire è 1. Lo zero, i numeri negativi e le frazioni restano fuori dall'intervallo e vengono rifiutati.
Posso scrivere il numero romano in minuscolo?
Sì. Il testo viene portato in maiuscolo prima della lettura, quindi mmxxvi e MMXXVI danno lo stesso risultato. Conta la grafia: una forma non standard, come IIII, viene rifiutata.
Come si rilegge un numero romano come cifra?
Da sinistra a destra: prima si cerca una coppia sottrattiva di due lettere, come CM o IX, altrimenti una lettera sola, e poi i valori vengono sommati. È comodo per ordinare vecchi riferimenti numerati I, II, III.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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)Esempio di richiesta
{
"mode": "to_roman",
"value": "2026"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.roman",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
min | 1 |
max | 3999 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Converte tra interi arabi (da 1 a 3999) e numeri romani nei due sensi. mode=to_roman trasforma un numero nella sua stringa romana; mode=to_arabic analizza una stringa romana riconvertendola in un numero e respinge qualsiasi grafia non canonica.
Conversione sottrattiva greedy
Entrambi i sensi usano un'unica tabella ordinata di valori con tredici coppie di simboli: 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 quella tabella dal più grande al più piccolo, aggiungendo ogni simbolo finché il valore residuo è almeno pari al suo peso e sottraendo man mano, così che 2026 diventi MMXXVI e 4 diventi IV anziché IIII. mode=to_arabic scorre la stringa da sinistra a destra, riconoscendo una coppia sottrattiva di due caratteri (come CM o IX) prima di ripiegare su un singolo simbolo, sommando i pesi. È questo schema greedy che fa sì che l'output sia sempre la forma canonica più breve con corretta notazione sottrattiva anziché ripetizione additiva.
Gestione dell'input e l'intervallo 1..3999
Il campo value è documentato come stringa, ma to_roman accetta anche un intero semplice o una stringa di sole cifre, che converte con Number prima di verificare che sia un intero entro 1..3999; qualsiasi valore fuori da quell'intervallo inclusivo solleva invalid_input. Per to_arabic il value deve essere una stringa; viene prima portata in maiuscolo, così che le maiuscole/minuscole miste come "mmxxvi" siano accettate, poi filtrata affinché possano comparire solo le lettere M, D, C, L, X, V e I.
Validazione canonica rigorosa in fase di analisi
Quel controllo di andata e ritorno respinge le stringhe malformate ma sommabili come IIII, VV o IC, che i parser ingenui accetterebbero silenziosamente, perché solo l'unica grafia canonica sopravvive alla ricodifica. to_arabic fa di più che sommare i simboli: dopo l'analisi ricodifica il numero con to_roman e richiede che il risultato sia esattamente uguale all'input in maiuscolo, e conferma inoltre che il valore analizzato ricada in 1..3999. Qualsiasi carattere estraneo, una stringa vuota o un valore fuori intervallo solleva un errore tipizzato invalid_input anziché un crash non tipizzato.
Casi di integrazione
Validazione di numerali inseriti dall'utente
Usi to_arabic per accettare una stringa romana solo se è scritta in forma canonica rigorosa, respingendo IIII o IC.
Domande tecniche
Accetta input romano in minuscolo?
Sì. to_arabic porta prima la stringa in maiuscolo, così che "mmxxvi" sia trattato come "MMXXVI".
Accetterà IIII o IC?
No. Dopo l'analisi ricodifica il numero e richiede una corrispondenza esatta, quindi è valida solo l'unica grafia canonica; le forme non standard sollevano invalid_input.
Posso passare il numero come stringa?
Per to_roman sì: una stringa di sole cifre come "1990" viene convertita in numero. to_arabic si aspetta una stringa di lettere romane.
È gratuito e quanto costa l'API?
Il widget del browser è gratuito; l'API usa saldo KIT prepagato a partire da $0.002, con le attività fallite non addebitate.