罗马数字转换器是什么?
这个工具可以把我们日常使用的整数(即阿拉伯数字)转换成对应的罗马数字。罗马数字曾通行于整个罗马帝国,时至今日依然随处可见:钟表表盘、书籍章节编号、电影版权年份,以及帝王、教皇的名号(如"路易十四")等。经典的罗马数字体系用七个基本符号即可表示 1 到 3999 之间的所有数值。
罗马数字的七个符号
七个核心符号分别是:I = 1、V = 5、X = 10、L = 50、C = 100、D = 500、M = 1000。为了避免同一个符号连续出现四次,罗马数字采用"小数在大数左边表示相减"的规则,由此形成几个特殊组合:IV(4)、IX(9)、XL(40)、XC(90)、CD(400)、CM(900)。
转换的原理
转换器对一份按数值从大到小排列的 13 组"数值—符号"对照表(从 1000 = M 到 1 = I)采用贪心算法。从原始数字开始,每次都减去当前还能容纳的最大数值,并在结果后追加相应符号,如此反复直到余数为零。由于对照表中已经包含了 CM、CD、XC、XL、IX、IV 这些减法组合,输出结果始终是规范、标准的写法。
$$\text{Roman} = \bigoplus_{i}\; \text{sym}_i \times \left\lfloor \frac{R_i}{v_i} \right\rfloor, \quad R_0 = \text{Number}$$实例演示
以 2024 为例。先减去 1000(M),余 1024;再减去 1000(M),余 24,此时已得到 "MM"。接着处理 24:连续两次减去 10(X),余 4,得到 "XX"。最后 4 写作 IV。把它们拼起来,结果就是 MMXXIV。
$$2024 - 1000 = 1024 \;\to\; 1024 - 1000 = 24 \;\to\; 24 - 10 - 10 = 4 \;\to\; 4 = \text{IV}$$$$2024 = \text{MM} + \text{XX} + \text{IV} = \text{MMXXIV}$$
常见问题
为什么上限是 3999? 标准罗马数字体系中没有比 M 更大的符号,因此仅用 M 能清晰书写的最大数值就是 3999(MMMCMXCIX)。更大的数字需要在符号上方加横线(vinculum,即"千倍线")来表示,而这已不属于基本记数法的范围。
罗马数字有"零"吗? 没有。罗马人没有表示零的符号,这套体系只能表示正整数。
为什么写 IV 而不是 IIII? 减法规则可以让数字更简短,避免同一符号重复超过三次——不过在某些钟表上,为了视觉上的对称美观,仍会使用 IIII。