Roman Numeral Arithmetic
Effectuer l'addition, la soustraction, la multiplication et la division avec les chiffres romains.
= 14
= 9
RomanNumeralArithmetic.reference
I
1
V
5
X
10
L
50
C
100
D
500
M
1000
RomanNumeralArithmetic.rules
- RomanNumeralArithmetic.rule1
- RomanNumeralArithmetic.rule2
- RomanNumeralArithmetic.rule3
À propos de cet outil
Les chiffres romains sont un ancien système de numération encore utilisé dans des contextes formels, des cadrans de montres aux dates de sortie des films. Bien que la lecture des chiffres romains soit simple, effectuer des opérations arithmétiques avec eux directement est fastidieux car la notation n'a pas de zéro et ne s'aligne pas avec la logique positionnelle. Cet outil élimine cette difficulté en vous permettant d'additionner, soustraire, multiplier et diviser les chiffres romains instantanément, en convertissant entre chiffres romains et arabes de manière transparente.
Pour utiliser l'outil, sélectionnez l'opération dans le menu déroulant, entrez deux chiffres romains ou mélangez des entrées romaines et arabes, puis cliquez sur Calculer. L'outil effectue l'opération arithmétique instantanément et affiche le résultat dans les deux formats, romain et arabe, ce qui facilite la vérification de votre travail ou la compréhension de la relation entre l'arithmétique romaine et la notation moderne. C'est parfait pour les étudiants en histoire, les amateurs de mots croisés ou toute personne curieuse de savoir comment les Romains effectuaient les calculs avant l'invention de l'algèbre.
Questions Fréquentes
Implémentation du Code
ROMAN_VALUES = [
(1000,'M'),(900,'CM'),(500,'D'),(400,'CD'),(100,'C'),(90,'XC'),
(50,'L'),(40,'XL'),(10,'X'),(9,'IX'),(5,'V'),(4,'IV'),(1,'I')
]
def to_int(roman: str) -> int:
"""Convert Roman numeral string to integer."""
values = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}
result, prev = 0, 0
for ch in reversed(roman.upper()):
val = values[ch]
if val < prev:
result -= val
else:
result += val
prev = val
return result
def to_roman(n: int) -> str:
"""Convert integer (1-3999) to Roman numeral string."""
if not 1 <= n <= 3999:
raise ValueError("Number must be between 1 and 3999")
result = ""
for value, numeral in ROMAN_VALUES:
while n >= value:
result += numeral
n -= value
return result
# Arithmetic operations
def roman_add(a: str, b: str) -> str:
return to_roman(to_int(a) + to_int(b))
def roman_sub(a: str, b: str) -> str:
return to_roman(to_int(a) - to_int(b))
def roman_mul(a: str, b: str) -> str:
return to_roman(to_int(a) * to_int(b))
def roman_div(a: str, b: str) -> str:
r = to_int(a) // to_int(b)
return to_roman(r)
# Examples
print(f"XIV + IX = {roman_add('XIV', 'IX')}") # 14+9=23 = XXIII
print(f"L - XIII = {roman_sub('L', 'XIII')}") # 50-13=37 = XXXVII
print(f"V × IV = {roman_mul('V', 'IV')}") # 5×4=20 = XX
print(f"XX ÷ IV = {roman_div('XX', 'IV')}") # 20÷4=5 = V
# Convert between formats
for n in [1, 4, 9, 14, 40, 90, 399, 1994, 2024]:
print(f"{n} = {to_roman(n)}")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.