Convertisseur de chiffres romains
Passez des nombres ordinaires aux chiffres romains et inversement : 2026 devient MMXXVI, et MMXXVI se relit 2026. Les graphies non standard sont refusées au lieu d'être devinées, pour que dates et numéros de sections restent justes. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Valeur
- 1
- Mode de calcul
- To roman
- Résultat
- I
- Valeur d’entrée
- 1
gratuit dans votre navigateur
Sept lettres et six paires soustractives
Les chiffres romains utilisent sept lettres : I vaut 1, V vaut 5, X vaut 10, L vaut 50, C vaut 100, D vaut 500 et M vaut 1000. Six paires placent une lettre plus petite devant une plus grande pour la retrancher : IV vaut 4, IX vaut 9, XL vaut 40, XC vaut 90, CD vaut 400 et CM vaut 900. Pour écrire un nombre, le convertisseur prend la plus grande de ces treize valeurs qui tient encore, écrit son symbole, la retranche et recommence jusqu'à ce qu'il ne reste rien. C'est ainsi que 2026 devient MMXXVI, et c'est pourquoi le résultat est toujours la forme standard la plus courte.
Où les chiffres romains apparaissent encore
Ils indiquent les années de publication et de films dans les génériques, sur des plaques et sur les pages de titre, et ils numérotent sections et clauses en I, II, III dans les plans et les contrats. Les relire en nombres ordinaires aide à trier d'anciennes références. Il n'existe aucun chiffre pour zéro, et la plus grande valeur que les symboles classiques peuvent écrire est 3999, MMMCMXCIX. À la lecture, toute graphie qui n'est pas la forme standard, comme IIII ou IC, est refusée au lieu d'être devinée, pour qu'une faute de frappe ne devienne jamais un nombre faux sans que personne le voie.
Gestion de l'entrée et la plage 1..3999
Il n'y a pas de zéro ni de chiffre pour le représenter, et 3999 (MMMCMXCIX) est la plus grande valeur exprimable avec les symboles classiques. La réponse reprend la chaîne d'entrée normalisée et le résultat converti.
Cas d’usage
Années de copyright et d'édition
Rendez des années de publication ou de film en chiffres romains (par ex. 2026 vers MMXXVI) pour les génériques, les planches et les pages de titre.
Numérotation de plans et de clauses
Générez des repères de section de style I, II, III, ou analysez d'anciennes références numérotées en romain pour les reconvertir en entiers en vue d'un tri.
Questions fréquentes
Quelle plage de nombres est prise en charge ?
Les entiers de 1 à 3999 inclus. Il n'y a pas de chiffre pour zéro et 3999 (MMMCMXCIX) est la plus grande valeur classique.
Pourquoi 4 s'écrit-il IV et non IIII ?
Parce que le convertisseur écrit toujours la forme standard la plus courte, avec des paires soustractives où une lettre plus petite placée devant une plus grande se retranche. On obtient ainsi IV pour 4, IX pour 9, XL pour 40 et CM pour 900.
Existe-t-il un chiffre romain pour zéro ?
Non. Les chiffres romains n'ont aucun symbole pour zéro, la plus petite valeur convertible est donc 1. Zéro, les nombres négatifs et les fractions sortent de la plage et sont refusés.
Puis-je saisir un chiffre romain en minuscules ?
Oui. Le texte est mis en majuscules avant d'être lu, si bien que mmxxvi et MMXXVI donnent le même résultat. Seule compte la graphie : une forme non standard, comme IIII, est refusée.
Comment un chiffre romain est-il relu en nombre ?
De gauche à droite : une paire soustractive de deux lettres, comme CM ou IX, est reconnue en premier, sinon une lettre seule, puis les valeurs sont additionnées. C'est pratique pour trier d'anciennes références numérotées I, II, III.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"mode": "to_roman",
"value": "2026"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.roman",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Limites
min | 1 |
max | 3999 |
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Convertit entre entiers arabes (1 à 3999) et chiffres romains dans les deux sens. mode=to_roman transforme un nombre en sa chaîne romaine ; mode=to_arabic analyse une chaîne romaine pour en faire un nombre et rejette toute écriture non canonique.
Conversion soustractive gloutonne
Ce schéma glouton est la raison pour laquelle la sortie est toujours la forme standard la plus courte, avec une notation soustractive correcte plutôt qu'une répétition additive. Les deux sens utilisent une seule table de valeurs ordonnée de treize paires de symboles : 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 parcourt cette table du plus grand au plus petit, ajoutant chaque symbole tant que la valeur restante est au moins égale à son poids et la soustrayant au passage, de sorte que 2026 devient MMXXVI et que 4 devient IV plutôt que IIII. mode=to_arabic balaie la chaîne de gauche à droite, faisant correspondre une paire soustractive de deux caractères (comme CM ou IX) avant de retomber sur un symbole unique, en sommant les poids.
Gestion de l'entrée et la plage 1..3999
Le champ value est documenté comme une chaîne, mais to_roman accepte aussi un entier brut ou une chaîne entièrement numérique, qu'il contraint avec Number avant de vérifier qu'il s'agit d'un entier dans 1..3999 ; toute valeur hors de cette plage inclusive déclenche invalid_input. Pour to_arabic la value doit être une chaîne ; elle est d'abord mise en majuscules, de sorte qu'une casse mixte ou minuscule comme "mmxxvi" est acceptée, puis filtrée pour que seules les lettres M, D, C, L, X, V et I puissent apparaître.
Validation canonique stricte à l'analyse
Ce contrôle d'aller-retour rejette les chaînes malformées mais sommables comme IIII, VV ou IC, que des analyseurs naïfs accepteraient en silence, car seule l'unique écriture canonique survit au réencodage. to_arabic fait plus que sommer des symboles : après l'analyse, il réencode le nombre avec to_roman et exige que le résultat soit exactement égal à l'entrée mise en majuscules, et il confirme aussi que la valeur analysée se situe dans 1..3999. Tout caractère parasite, une chaîne vide, ou une valeur hors plage déclenche une erreur typée invalid_input plutôt qu'un plantage non typé.
Cas d'intégration
Valider des chiffres saisis par l'utilisateur
Utilisez to_arabic pour n'accepter une chaîne romaine que si elle est écrite en forme canonique stricte, en rejetant IIII ou IC.
Questions techniques
Accepte-t-il une entrée romaine en minuscules ?
Oui. to_arabic met d'abord la chaîne en majuscules, de sorte que "mmxxvi" est traité de la même façon que "MMXXVI".
Acceptera-t-il IIII ou IC ?
Non. Après l'analyse, il réencode le nombre et exige une correspondance exacte, de sorte que seule l'unique écriture canonique est valide ; les formes non standard déclenchent invalid_input.
Puis-je passer le nombre sous forme de chaîne ?
Pour to_roman, oui : une chaîne entièrement numérique comme "1990" est contrainte en nombre. to_arabic attend une chaîne de lettres romaines.
Est-ce gratuit et combien coûte l'API ?
Le widget de navigateur est gratuit ; l'API utilise un solde KIT prépayé à partir de $0.002, les tâches échouées n'étant pas facturées.