ローマ数字とは
ローマ数字は、古代ローマで生まれ、現代でも時計や章番号などに使われる独特の数字表記法です。基本はI,V,X,L,C,D,Mの7文字を組み合わせ、足し算と引き算のルールで数を表します。
| ローマ数字 | I | V | X | L | C | D | M |
|---|---|---|---|---|---|---|---|
| アラビア数字 | 1 | 5 | 10 | 50 | 100 | 500 | 1000 |
小さい数を大きい数の左側に記述する方法もあり、この場合は右から左を減算します。これを減算則といいます。
| ローマ数字 | IV | IX | XL | XC | CD | CM |
|---|---|---|---|---|---|---|
| アラビア数字 | 4 | 9 | 40 | 90 | 400 | 900 |
例えば1,2,3,4,5,6,7,8,9,10はI,II,III,IV,V,VI,VII,VIII,IX,Xと表記することができます。
ローマ数字はこの7つの文字を使うことで1以上4,000未満の値を表現できます。ローマ数字で0は表現できません。
表記法
ローマ数字に変換するときのルールは以下のとおりです。
- 加算の原則
-
- 小さい数を大きい数の右に置くと足し算
- 例)III:3、VIII:8(=5+1+1+1)、LX:60(=50+10)
- 減算の原則
-
- 小さい数を大きい数の左に置くと引き算
- 例)IV:4(=-1+5)、IX:9(=-1+10)、XL:40(=-10+50)
- 繰り返しの制限
-
- 同じ記号は最大3回まで
- I,X,C,M.は3回まで連続して使うことができますが、V,L,D(アラビア数字で5から始まる値)は連続して使うことはできません。
- 例)III:3、4はIIIIではなくIVと表記
- 結果は大きい桁から
-
- ローマ数字に変換した各桁の文字列は千の位、百の位、十の位、一の位の順に並べます。
- 例)1234は各桁1000:M、200:CC、30:XXX、4:IVなのでMCCXXXIV
これらより1から9とその10倍、100倍、1000倍(3000まで)は以下の表記となります。行と列の交差するところが対応するローマ数字となります。
例えば、4と×100の交差するCDは400のローマ数字を表しています。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
|---|---|---|---|---|---|---|---|---|---|
| ×1 | I | II | III | IV | V | VI | VII | VIII | XI |
| ×10 | X | XX | XXX | XL | L | LX | LXX | LXXX | XC |
| ×100 | C | CC | CCC | CD | D | DC | DCC | DCCC | DM |
| ×1000 | M | MM | MMM |
つなぎ表記
通常のローマ数字に上線を引くことで1,000倍を表現します。また、二重上線は1,000,000倍を表現します。
つなぎ表記を使うことで4,000以上の値を表記することができます。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
|---|---|---|---|---|---|---|---|---|---|
| ×1 | I | II | III | IV | V | VI | VII | VIII | IX |
| ×10 | X | XX | XXX | XL | L | LX | LXX | LXXX | XC |
| ×100 | C | CC | CCC | CD | D | DC | DCC | DCCC | CM |
| ×1,000 | M | MM | MMM | ĪV̄ | V̄ | V̄Ī | V̄ĪĪ | V̄ĪĪĪ | ĪX̄ |
| ×10,000 | X̄ | X̄X̄ | X̄X̄X̄ | X̄L̄ | L̄ | L̄X̄ | L̄X̄X̄ | L̄X̄X̄X̄ | X̄C̄ |
| ×100,000 | C̄ | C̄C̄ | C̄C̄C̄ | C̄D̄ | D̄ | D̄C̄ | D̄C̄C̄ | D̄C̄C̄C̄ | C̄M̄ |
| ×1,000,000 | M̿ | M̿M̿ | M̿M̿M̿ |
これにより上線なしでは1から3,999、一重上線では4,000から3,999,999、二重上線では4,000,000から3,999,999,999まで表せるようになります。
変換のやり方
アラビア数字とローマ数字の相互変換のやり方です。
アラビア数字からローマ数字
アラビア数字からローマ数字に変換するときは、千の位、百の位、十の位、一の位に分解し、それぞれローマ数字に変換したあと順に並べます。
例えば426は以下のような手順になります。
-
- 数を位ごとに分解
- 426→400+20+6
-
- 各桁をローマ数字に変換
-
- 400→CD
- 20→XX
- 6→VI
-
- 変換した文字列を結合
- 426→CDXXVI
ローマ数字からアラビア数字
ローマ数字からアラビア数字に変換するときは、まず各記号を数字に変換します。現在の値と次の値を比較し現在の値 < 次の値のときは現在の値を減算し、それ以外の値は加算します。
例えばCMXLIVは以下のような手順になります。
-
- 各記号を数字に変換
- CMXLIVは100,1000,10,50,1,5となります。
-
- 各値を次の値と比較し符号を決定
-
数字に変換した値を次の値と比較し、次の値が大きければ符号をマイナスにします。最後の値は比較対象がないのでそのまま加算します。
- 1文字目と2文字目の比較。100(C) < 1000(M)なので減算。-100
- 2文字目と3文字目の比較。1000(M) > 10(X)なので加算。+1000
- 3文字目と4文字目の比較。10(X) < 50(L)なので減算。-10
- 4文字目と5文字目の比較。50(L) > 1(I)なので加算。+50
- 5文字目と6文字目の比較。1(I) < 5(V)なので減算。-1
- 最後の6文字目。5(V)を加算。
- -100+1000-10+50-1+5を計算し944となります。
関連記事
- ARABIC関数 (自作関数)
- ローマ数字をアラビア数字に変換します。
- ROMAN関数 (自作関数)
- アラビア数字をローマ数字に変換します。
