調べて分かる道具箱

ローマ数字の変換

例を入れてみる

MCMXCIV
どう区切って読んだか
部分値
M1000
CM900
XC90
IV4
合計1994

入れたものが数字かローマ数字かを見て、向きを決めています。 入力はこの画面の中だけで処理します。

よくある質問

4 はローマ数字でどう書きますか?

IV です。V(5)の前に I(1)を置いて「5から1を引く」形にします。同じ作り方で9はIX、40はXL、90はXC、400はCD、900はCMになります。引き算の形にできるのはこの6組だけで、IはVとXから、XはLとCから、CはDとMからしか引けません。VとLとDは引き算に使いません。

IIII と IV はどちらが正しいですか?

いま普通に使われるのはIVです。この道具はIIIIも4と読みますが、「標準の書き方ではありません」と画面に出します。読める入力を断ると正しい答えを持っている人を追い返すことになるからです。ただし同じ数に2通りの書き方があると、並べ替えたときに順番が狂い、機械で突き合わせたときに食い違います。

なぜ3999までしか書けないのですか?

いちばん大きい記号がM(1000)で、その上が無いからです。4000はMを4つ並べるしかありませんが、標準の書き方は同じ記号を4つ並べません。1から3999までのすべてで4つ並ばないことを単体テストで確かめています。Unicodeが5000と10000のために別の文字を用意しているのも、7文字だけでは足りないことの裏返しです。

0 はローマ数字でどう書きますか?

書けません。0を表す記号がそもそもありません。0は「その位が空である」ことを示す記号で、位ごとに数字を並べる書き方に必要なものです。ローマ数字は記号そのものが値を持つので、無い位は書かなければ済みます。1005はMとVを並べてMVになり、途中の2つの0は消えてしまいます。

Ⅳ のような1文字のローマ数字を使ってもいいですか?

この道具は入力としては受け取りますが、答えは英字のI V X L C D Mで出します。Unicodeの規格書自身が「たいていの用途では、ふさわしいラテン文字を並べて作るほうが望ましい」と書いているためです。専用の文字が用意されたのは東アジアの従来の文字コードとの互換と、縦書きで文字を正立させるためです。専用文字のままコピーすると、貼り付けた先で「IV」と検索しても見つかりません。

IC を 99 と読んでくれないのはなぜですか?

そう書く決まりが無いからです。99はXCIXと書きます。小さい記号を前に置いて引けるのはIV IX XL XC CD CMの6組だけで、ICはそこから外れます。無い並びをそれらしい数として受け取ってしまうと、書き間違いに気づけないまま別の数を答えとして持ち帰ることになります。

数を入れればローマ数字が、ローマ数字を入れれば数が出ます。読めない並びは「読めない」と言います ── IC や VX を、それらしい数として 黙って受け取りません。

使う記号は7つだけ。だから 3999 で止まります

ローマ数字に使う7つの記号
記号値
I指1本1
V片手の5本5
X両手の10本10
L50
C100
D500
Mいちばん大きい記号1000

ここがこの数え方のいちばん面白いところです。表は M(1000)で終わっていて、その上がありません。だから 4000 を書こうとすると、M を4つ並べて MMMM とするしかなくなります。

ところが標準の書き方は、同じ記号を4つ並べません。 3 は III ですが、4になった瞬間に IV という引き算の形に変わります。 30 は XXX で 40 は XL、300 は CCC で 400 は CD。 いつも3つで打ち止めになり、4つ目は次の記号を借りてくる形に なります。この道具は 1 から 3999 までのすべてを書き出して、同じ記号が4つ並ぶ数が1つも無いことを毎回テストで確かめています。

つまり MMMM は、規則の外にある形です。 M より大きい記号が無い以上、 書ける上限は M を3つ並べた 3000 の側にあり、3999(MMMCMXCIX)が最後になります。

新しい記号を足せば先へ進めます。実際 Unicode には ROMAN NUMERAL FIVE THOUSAND(5000)とROMAN NUMERAL TEN THOUSAND(10000)という文字が別に用意されていて、 規格書はこれらを「独立した文字であり、ほかの文字への分解を持たない」と説明しています。 I V X L C D M の組み合わせでは書けないから、別の文字が要る ── というわけです。

0 が無くても困りません。1005 は MV です

ローマ数字には0 を表す記号がありません。 これを「不便だっただろう」と 思うかもしれませんが、そもそも 0 を書く場所がありません。

いま使っている数字は、置いた場所で値が決まります。 1005 の「1」が 1000 を表すのは、右から4番目に置かれているからです。 だから 15 と 1005 を見分けるために、空の位を埋める記号が要ります。それが 0 です。

ローマ数字は違います。記号そのものが値を持っています。 M はどこに書いてあっても 1000、V はどこに書いてあっても 5 です。 だから 1005 はM と V を並べて MV。 十の位も百の位も、無いものは書かないだけで済み、2つの 0 はきれいに消えてしまいます。

「位が空である」という状態が生まれない書き方なので、それを示す記号も要らなかった、ということです。 上の欄に 1005 と入れると、この消え方が見られます。

引き算の形は、6組しかありません

引き算の形で書ける6組
書き方値
IVV(5) から I(1) を引く4
IXX(10) から I(1) を引く9
XLL(50) から X(10) を引く40
XCC(100) から X(10) を引く90
CDD(500) から C(100) を引く400
CMM(1000) から C(100) を引く900

規則は「小さい記号は、すぐ上とその次の記号からだけ引ける」です。 I が引ける 相手は V と X まで、X は L と C まで、C は D と M まで。 V・L・D は引き算に使いません。だからIC も IL も書き方としてありません(99 のつもりの IC、49 のつもりの IL)。99 は XCIX と書きます。

この道具が IC を断るのは、意地悪ではありません。受け取ると、書き間違いに気づけないからです。 99 のつもりで IC と書いた人に 99 を返すと、間違った書き方をそのまま覚えて帰ることになります。

2通りに読める並びも断ります

IIX のような並びは、「II を X から引いて 8」とも「I と IX を足して 10」とも読めます。 どちらか一方を選んで黙って返すのが、いちばん危ない振る舞いです。 だからこの道具は、あとから大きい部分が出てくる並びを断ります。

VV も断ります。V を2つ並べると X と同じ値になるので、そう書く決まりがありません。 L を2つなら C、D を2つなら M と、いずれも1つ上の記号と同じ値になります。

Ⅰ Ⅴ Ⅹ という専用の文字では書きません

日本語入力で「1」を変換すると Ⅰ が候補に出てきます。 これは英字の I とは別の文字です。 この道具は入力としては受け取りますが、答えは英字の I V X L C D M で出します。

理由は2つあります。1つめは探せなくなること。 専用の文字で書いた「Ⅳ」は、 貼り付けた先で「IV」と検索しても引っかかりません。 2つめは規格そのものがそう勧めていることです。 Unicode の規格書は「たいていの用途では、ふさわしいラテン文字を並べてローマ数字を作るほうが望ましい」と書いています。

では、なぜ専用の文字があるのか。同じ規格書が理由を書いています ──東アジアの従来の文字コードとの互換のため、 そして縦書きにしたときに文字を寝かせず正立させるためです。 つまり日本語の縦組みの都合が、この文字が存在する理由の一部です。 新しく書くための文字ではなく、すでにある文書を取り込むための文字だ、 というわけです。

ローマ数字の早見表

1〜20

1から20までのローマ数字
数ローマ数字
1I
2II
3III
4IV
5V
6VI
7VII
8VIII
9IX
10X
11XI
12XII
13XIII
14XIV
15XV
16XVI
17XVII
18XVIII
19XIX
20XX

10〜100(10きざみ)

10から100までのローマ数字
数ローマ数字
10X
20XX
30XXX
40XL
50L
60LX
70LXX
80LXXX
90XC
100C

100〜1000(100きざみ)

100から1000までのローマ数字
数ローマ数字
100C
200CC
300CCC
400CD
500D
600DC
700DCC
800DCCC
900CM
1000M

1000〜3999

1000から3999までのローマ数字
数ローマ数字
1000M
2000MM
3000MMM
3888MMMDCCCLXXXVIII
3999MMMCMXCIX

いちばん長くなるのは 3888 の MMMDCCCLXXXVIIIで、15文字です。 1〜3999 のどれを書いても、これより長くはなりません。

引用の出どころ: Unicode の2つの引用(ラテン文字を並べるほうが望ましい/東アジアの規格との 互換と縦書きでの正立/5000と10000は独立した文字で分解を持たない)は、いずれも The Unicode Standard 16.0 第22章「Number Forms」(新しいタブで開きます)から取っています。7つの記号の値と6組の引き算の形は、この道具の 計算そのものが定義として持っていて、1〜3999 の全部で往復する検算を通しています。