
什么是罗马数字?
罗马数字是一种起源于古罗马的数字系统,几个世纪以来一直是欧洲的主要记数方式。它使用拉丁字母来表示数值,并通过加法和减法规则进行组合。
尽管在日常算术中已被印度-阿拉伯数字系统取代,但罗马数字至今仍常见于钟表盘、书籍章节编号、电影续集、年份标识、大纲以及超级碗等赛事名称中。

七个基本符号
| 符号 | 数值 |
|---|---|
| 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)。
-> 试试 罗马数字转换器