ローマ数字

本ページには広告が含まれています。

ローマ数字とは

ローマ数字は、古代ローマで生まれ、現代でも時計や章番号などに使われる独特の数字表記法です。基本はI,V,X,L,C,D,Mの7文字を組み合わせ、足し算と引き算のルールで数を表します。

ローマ数字の表記方法
ローマ数字IVXLCDM
アラビア数字1510501005001000

小さい数を大きい数の左側に記述する方法もあり、この場合は右から左を減算します。これを減算則といいます。

ローマ数字の表記方法(減算則)
ローマ数字IVIXXLXCCDCM
アラビア数字494090400900

例えば1,2,3,4,5,6,7,8,9,10I,II,III,IV,V,VI,VII,VIII,IX,Xと表記することができます。

ローマ数字はこの7つの文字を使うことで1以上4,000未満の値を表現できます。ローマ数字で0は表現できません。

表記法

ローマ数字に変換するときのルールは以下のとおりです。

加算の原則
  1. 小さい数を大きい数の右に置くと足し算
  2. 例)III:3VIII:8(=5+1+1+1)、LX:60(=50+10)
減算の原則
  1. 小さい数を大きい数の左に置くと引き算
  2. 例)IV:4(=-1+5)、IX:9(=-1+10)、XL:40(=-10+50)
繰り返しの制限
  1. 同じ記号は最大3回まで
  2. I,X,C,M.は3回まで連続して使うことができますが、V,L,D(アラビア数字で5から始まる値)は連続して使うことはできません。
  3. 例)III:34IIIIではなくIVと表記
結果は大きい桁から
  1. ローマ数字に変換した各桁の文字列は千の位、百の位、十の位、一の位の順に並べます。
  2. 例)1234は各桁1000:M200:CC30:XXX4:IVなのでMCCXXXIV

これらより1から9とその10倍、100倍、1000倍(3000まで)は以下の表記となります。行と列の交差するところが対応するローマ数字となります。

例えば、4×100の交差するCD400のローマ数字を表しています。

123456789
×1IIIIIIIVVVIVIIVIIIXI
×10XXXXXXXLLLXLXXLXXXXC
×100CCCCCCCDDDCDCCDCCCDM
×1000MMMMMM

つなぎ表記

通常のローマ数字に上線を引くことで1,000倍を表現します。また、二重上線は1,000,000倍を表現します。

つなぎ表記を使うことで4,000以上の値を表記することができます。

1 2 3 4 5 6 7 8 9
×1 IIIIIIIVVVIVIIVIIIIX
×10 XXXXXXXLLLXLXXLXXXXC
×100 CCCCCCCDDDCDCCDCCCCM
×1,000 MMMMMMĪV̄V̄ĪV̄ĪĪV̄ĪĪĪĪX̄
×10,000 X̄X̄X̄X̄X̄X̄L̄L̄X̄L̄X̄X̄L̄X̄X̄X̄X̄C̄
×100,000 C̄C̄C̄C̄C̄C̄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は以下のような手順になります。

  1. 数を位ごとに分解
    426400+20+6
  2. 各桁をローマ数字に変換
    1. 400CD
    2. 20XX
    3. 6VI
  3. 変換した文字列を結合
    426CDXXVI

ローマ数字からアラビア数字

ローマ数字からアラビア数字に変換するときは、まず各記号を数字に変換します。現在の値と次の値を比較し現在の値 < 次の値のときは現在の値を減算し、それ以外の値は加算します。

例えばCMXLIVは以下のような手順になります。

  1. 各記号を数字に変換
    CMXLIV100,1000,10,50,1,5となります。
  2. 各値を次の値と比較し符号を決定
    数字に変換した値を次の値と比較し、次の値が大きければ符号をマイナスにします。最後の値は比較対象がないのでそのまま加算します。
    1. 1文字目と2文字目の比較。100(C) < 1000(M)なので減算。-100
    2. 2文字目と3文字目の比較。1000(M) > 10(X)なので加算。+1000
    3. 3文字目と4文字目の比較。10(X) < 50(L)なので減算。-10
    4. 4文字目と5文字目の比較。50(L) > 1(I)なので加算。+50
    5. 5文字目と6文字目の比較。1(I) < 5(V)なので減算。-1
    6. 最後の6文字目。5(V)を加算。
  3. -100+1000-10+50-1+5を計算し944となります。

関連記事

ARABIC関数 (自作関数)
ローマ数字アラビア数字に変換します。
ROMAN関数 (自作関数)
アラビア数字ローマ数字に変換します。