不論輸入數字(阿拉伯數字)或羅馬數字,都會自動判斷並互相轉換,也會顯示像 1000 + 900 + 90 + 4 這樣的分解過程。
這個頁面可以做什麼
- 「1994 寫成羅馬數字是什麼?」「MCMXCIV 是多少?」這類轉換,用 1 個輸入欄就能雙向一次完成(自動判斷輸入的是數字還是羅馬數字)
- 會顯示像 1000 + 900 + 90 + 4 → M + CM + XC + IV 這樣的分解過程,讓您學會轉換的方法
- 時鐘的鐘面、電影或遊戲的續集編號、奧運的屆數等地方看到的羅馬數字,都能當場看懂
- 4,000 以上的大數,可以轉換成加上上橫線的羅馬數字(可用底線輸入,最多到 3,999,999)
- 時鐘鐘面常用的 IIII 這種慣用寫法也能讀取,並同時顯示正式寫法(IV)
這個計算有什麼用?
最常看到羅馬數字的地方,就是手錶和掛鐘的鐘面。XII 是 12 點、III 是 3 點、IX 是 9 點——懂了減法規則,全部都看得懂。
仔細看會發現,很多時鐘的 4 點不是寫成正式的 IV,而是 IIII。這是有「鐘面左右比較平衡」「避免 IV 和天神朱比特(IVPPITER)的拼法重疊」等各種說法的傳統慣用寫法,作為規則的例外流傳至今。
「洛基 IV」是第 4 集、「Final Fantasy VII」是第 7 代、「勇者鬥惡龍 III」是第 3 代、「星際大戰 Episode IV」是四部曲——續集的編號常常使用羅馬數字。
超過 X 之後,像「XIII(第 13 代)」就比較難讀,但只要懂減法規則就不會搞錯。能一眼看懂作品標題裡的數字,也算是一點小常識。
國際活動的「第 ◯ 屆」常使用羅馬數字。2024 年的巴黎奧運是「第 XXXIII 屆奧林匹克運動會」(第 33 屆),美國最大的運動賽事超級盃,也寫成「Super Bowl LVIII」(第 58 屆,2024 年)。
在新聞或海報上看到這種寫法時,就能讀出 XXXIII = 10+10+10+1+1+1 = 33。
歐洲君主和教宗的世代,在英文等語言中用羅馬數字書寫。伊莉莎白二世是 Elizabeth II,法國太陽王路易十四是 Louis XIV,教宗若望保祿二世是 John Paul II。
在歷史書、國外新聞或紀念幣上看到「Henry VIII(亨利八世)」這樣的寫法時,就能正確讀出 VIII = 5+1+1+1 = 8。
電影片尾字幕的最後,有時會用羅馬數字寫上製作年份,例如「MMXXVI」(2026 年)。歐美建築物的奠基石和紀念碑,傳統上也會刻上用羅馬數字寫的完工年份。
例如 MCMLXIV 是 1000+900+60+4 = 1964——東京第一次舉辦奧運的那一年。再長的年份,只要像 M、CM、LX、IV 這樣按符號的組合分段相加,就能正確讀出來。
公式
符號與用語解說
符號
| I | 表示 1 的符號,據說來自 1 根手指的形狀。I=1、II=2、III=3。 | |
| V | 表示 5 的符號,有一說是來自張開的手掌(5 根手指)的形狀。 | |
| X | 表示 10 的符號,有一說是 2 個 V(5)上下疊起來的形狀。 | |
| L | 表示 50 的符號。 | |
| C | 表示 100 的符號,據說取自拉丁文 centum(100)的第一個字母。和「公分(centimeter,百分之一公尺)」的 centi 同一個字源。 | |
| D | 表示 500 的符號,有一說是來自表示 1000 的古老符號的右半邊。 | |
| M | 表示 1000 的符號,據說取自拉丁文 mille(1000)的第一個字母。和「公釐(millimeter,千分之一公尺)」的 milli 同一個字源。 | |
| X̅ | 加上橫線的 X | 符號上方的上橫線表示 1000 倍。X̅ 是 10×1000 = 10,000。在這個頁面,要像「_X」這樣加上底線輸入。 |
用語
| 羅馬數字 | 起源於古羅馬,用 I、V、X、L、C、D、M 這 7 個符號組合來表示數的寫法。沒有位值的概念,是把符號的值相加或相減來表示數。沒有表示 0 的符號。 |
| 阿拉伯數字 | 用 0~9 這 10 種數字表示數、我們平常使用的寫法。起源於印度,經由阿拉伯傳到歐洲,所以這樣稱呼。它是位值記數法,所以同樣是「9」,寫的位置不同,值就會變成 9、90、900。 |
| 減法記數 | 把小的符號放在大的符號前面來表示減法的寫法。正式承認的只有 IV(4)、IX(9)、XL(40)、XC(90)、CD(400)、CM(900)這 6 種,是為了避免同一個符號連續寫 4 次而想出的方法。 |
| 貪婪演算法 | 每一步都選當下能選的最大者的計算方法,英文叫 greedy algorithm,也是程式設計的基本想法之一。從阿拉伯數字轉換成羅馬數字時,用這個方法一定會得到正式寫法。 |
| 上橫線 | 畫在符號上方的橫線,拉丁文叫 vinculum(「連結、紐帶」的意思)。畫了上橫線的符號,值會變成 1000 倍,可以表示基本 7 個符號寫不出來的 4,000 以上的數。這個頁面最多可轉換到 3,999,999。 |
| 慣用寫法 | 雖然不符合正式規則,但自古以來廣泛使用的寫法。代表例子是時鐘鐘面的 IIII(正式寫法是 IV)。這個頁面的計算機也能讀取慣用寫法,並同時顯示正式寫法。 |
建議先了解的基礎知識
為了能「真正理解意義」地使用這個頁面的計算,這裡整理了建議事先了解的基礎知識。
| 加法與減法(國小一~二年級,6~8 歲) |
|
| 十進位的位值(國小,6~12 歲) |
|
| 由大到小分開的想法(國小、錢的計算,6~12 歲) |
|
用 Excel 計算的方法
| 阿拉伯數字 | 1994 |
| 羅馬數字 | =ROMAN(B1) |
| 羅馬數字 | MCMXCIV |
| 阿拉伯數字 | =ARABIC(B1) |
第 2 個表格,在 B1 輸入羅馬數字,B2 就會顯示阿拉伯數字(MCMXCIV 就是 1994)。ARABIC 函數輸入小寫(mcmxciv)也能轉換。
用 Google 試算表計算的方法
| 阿拉伯數字 | 1994 |
| 羅馬數字 | =ROMAN(B1) |
| 羅馬數字 | MCMXCIV |
| 阿拉伯數字 | =ARABIC(B1) |
ROMAN 函數的上限是 3,999,這點和 Excel 相同;但 Google 試算表能轉換的範圍是 1~3,999,輸入 0 會出現錯誤。
用 Python 計算的方法
value = "1994" # 要轉換的值(阿拉伯數字或羅馬數字)
# 貪婪演算法的對照表(由大到小,900=CM 這類減法組合也放進去)
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_roman(n):
# 阿拉伯數字 → 羅馬數字(從能減去的最大值開始,依序換成符號)
result = ""
for v, symbol in VALUES:
while n >= v:
result += symbol
n -= v
return result
SYMBOL_VALUES = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
def to_arabic(roman):
# 羅馬數字 → 阿拉伯數字(右邊相鄰的符號比較大就用減的)
total = 0
for i, ch in enumerate(roman):
v = SYMBOL_VALUES[ch]
if i + 1 < len(roman) and SYMBOL_VALUES[roman[i + 1]] > v:
total -= v
else:
total += v
return total
s = value.strip().upper()
if s.isdigit():
print(f"{s} = {to_roman(int(s))}")
else:
print(f"{s} = {to_arabic(s)}")
用 LaTeX 等數學式語言的寫法(可直接複製)
N = v₁ + v₂ + ⋯ + vₖ
N = v_1 + v_2 + \cdots + v_k
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<msub><mi>v</mi><mn>1</mn></msub>
<mo>+</mo>
<msub><mi>v</mi><mn>2</mn></msub>
<mo>+</mo>
<mo>⋯</mo>
<mo>+</mo>
<msub><mi>v</mi><mi>k</mi></msub>
</mrow>
</math>
N = v_1 + v_2 + cdots + v_k
RomanNumeral[1994]
convert(1994, roman);
N = sum([1000 900 90 4]);
N = v_1 + v_2 + ⋯ + v_k
N = Σ ±vᵢ
N = \sum_{i=1}^{k} \pm v_i
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>N</mi>
<mo>=</mo>
<munderover>
<mo>∑</mo>
<mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow>
<mi>k</mi>
</munderover>
<mo>±</mo>
<msub><mi>v</mi><mi>i</mi></msub>
</mrow>
</math>
N = sum_(i=1)^k +-v_i
FromRomanNumeral["MCMXCIV"]
convert("MCMXCIV", arabic);
N = 1000 - 100 + 1000 - 10 + 100 - 1 + 5;
N = ∑_(i=1)^k ±v_i
請 ChatGPT 幫忙計算的方法
你是羅馬數字轉換助理。請務必實際執行 Python 程式碼來進行下面的轉換,並只以執行結果作為回答的依據(不要用心算或推測回答)。 1. 請把 1994 轉換成羅馬數字。 2. 請把羅馬數字 MCMXCIV 轉換成阿拉伯數字。 3. 請把 2026 轉換成羅馬數字。 從阿拉伯數字轉換時,請一併列出像 1994 = 1000 + 900 + 90 + 4 這樣的值的分解。 請列出計算所用的程式碼和執行結果。
使用方法
-
1輸入數值在輸入欄中輸入要計算的數值
-
2計算按下「計算」按鈕
-
3查看結果計算結果會立即顯示。計算的思路和公式的解說,也都能在同一個頁面查看
DataChef 的特色
不需專業知識,操作直覺又簡單
無須登錄任何個人資料
按下「下載」後自動刪除檔案
無須標註來源出處
亦無須事先取得商用授權