正在加载,请稍候…

罗马数字转换器:如何读写罗马数字

在十进制数字与罗马数字之间转换。学习规则、符号、减法原则以及罗马数字背后的迷人历史。

罗马数字转换器:如何读写罗马数字

什么是罗马数字?

罗马数字是一种起源于古罗马的数字系统,几个世纪以来一直是欧洲的主要记数方式。它使用拉丁字母来表示数值,并通过加法和减法规则进行组合。

尽管在日常算术中已被印度-阿拉伯数字系统取代,但罗马数字至今仍常见于钟表盘、书籍章节编号、电影续集、年份标识、大纲以及超级碗等赛事名称中。

罗马数字转换器:如何读写罗马数字 插图

七个基本符号

符号 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1,000

减法规则

罗马数字使用减法记法以避免连续出现四个相同符号:

罗马数字 数值 规则
IV 4 I 在 V 前 = 5-1
IX 9 I 在 X 前 = 10-1
XL 40 X 在 L 前 = 50-10
XC 90 X 在 C 前 = 100-10
CD 400 C 在 D 前 = 500-100
CM 900 C 在 M 前 = 1000-100

只有这六种减法组合是标准的。999 写作 CMXCIX,而不是 IM。

罗马数字转换器:如何读写罗马数字 插图

罗马数字示例

阿拉伯数字 罗马数字 分解
4 IV 5-1
9 IX 10-1
14 XIV 10+4
40 XL 50-10
399 CCCXCIX 300+90+9
1776 MDCCLXXVI 1000+700+70+6
2025 MMXXV 2000+20+5
3999 MMMCMXCIX 3000+900+90+9

转换算法

罗马数字转换器:如何读写罗马数字 插图

阿拉伯数字转罗马数字:

def to_roman(num):
    values = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1]
    symbols = ['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I']
    result = ''
    for i, v in enumerate(values):
        while num >= v:
            result += symbols[i]
            num -= v
    return result

to_roman(2025)  # "MMXXV"

罗马数字转阿拉伯数字:

def from_roman(s):
    values = {'I':1, 'V':5, 'X':10, 'L':50, 'C':100, 'D':500, 'M':1000}
    result = 0
    for i in range(len(s)):
        curr = values[s[i]]
        next_val = values[s[i+1]] if i+1 < len(s) else 0
        if curr < next_val:
            result -= curr
        else:
            result += curr
    return result

罗马数字的限制

标准系统覆盖 1-3,999。对于 4,000 及以上的数字,历史文献中使用在符号上方加横线(vinculum)表示乘以 1,000,但这些扩展如今很少使用。零没有罗马数字——零的概念不属于古罗马数学。

罗马数字的现代用途

罗马数字出现在许多现代场景中。钟表传统上使用罗马数字。正式大纲使用罗马数字表示顶级章节(I, II, III)。电影和电视用于续集编号(《星球大战》第七部,超级碗 LVIII)。王室和教皇名称使用它们(国王查尔斯三世,教皇约翰·保罗二世)。建筑上常在基石上用罗马数字显示建造年份。奥运会每届编号(第 XXXIII 届奥运会 = 巴黎 2024)。

-> 试试 罗马数字转换器