Zum Inhalt springen
🛠️ToolsShed

Roman Numeral Arithmetic

Führe Addition, Subtraktion, Multiplikation und Division mit römischen Ziffern aus.

= 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

Über dieses Tool

Römische Ziffern sind ein altes Zahlensystem, das immer noch in formellen Kontexten verwendet wird, von Uhrenblättern bis zu Filmdaten. Obwohl das Lesen römischer Ziffern einfach ist, ist die direkte Durchführung arithmetischer Operationen mühsam, da die Notation keine Null hat und nicht mit der Positionslogik übereinstimmt. Dieses Werkzeug beseitigt diese Schwierigkeit, indem es Ihnen ermöglicht, römische Ziffern sofort zu addieren, zu subtrahieren, zu multiplizieren und zu dividieren, und nahtlos zwischen römischen und arabischen Ziffern zu konvertieren.

Um das Werkzeug zu verwenden, wählen Sie die Operation aus dem Dropdown-Menü, geben Sie zwei römische Ziffern ein oder mischen Sie römische und arabische Eingaben, und klicken Sie dann auf Berechnen. Das Werkzeug führt die arithmetische Operation sofort aus und zeigt das Ergebnis in beiden Formaten an, römisch und arabisch, was es leicht macht, Ihre Arbeit zu überprüfen oder zu verstehen, wie römische Arithmetik mit moderner Notation zusammenhängt. Es ist perfekt für Geschichtsstudenten, Kreuzworträtsel-Enthusiasten oder jeden, der neugierig ist, wie die Römer Berechnungen durchführten, bevor die Algebra erfunden wurde.

Häufig gestellte Fragen

Code-Implementierung

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.