ローマ数字の基礎知識とGoogle計算機のひみつ

時計盤などでお馴染みのローマ数字に関する豆知識。あとGoogle計算機におけるローマ数字の内部処理が面白かったので試してみて下さい。

ローマ数字の基礎知識とGoogle計算機のひみつ

ひょんなことから、Google検索窓でローマ数字が扱えることを知りました。

ローマ数字というのは、良く時計に書いてある III や IX とか言うアルファベットを使った数字表記のことです。

しかもGoogle計算機がローマ数字に対応していて、高度な演算まで出来ることに気づいちゃいましたよね…。(^^;

ローマ数字の起源

ローマ数字 壁時計【Glorywork】

まずはざっくりローマ数字の基本について。

ローマ数字と基本の数え方

1 2 3 4 5 6 7 8 9
一の位 I II III IV V VI VII VIII IX
十の位 X XX XXX IL L LX LXX LXXX XC
百の位 C CC CCC CD D DC DCC DCCC CM
千の位 M MM MMM

ローマ数字は、もともと家畜などを一頭一頭数えるのに使われた表記法でした。本質的に大きな数字を扱うようには考えられてないように思います。

Wikipediaによるとローマ数字はかなり大きな数も扱えることになってますが、実際に千を越える表記を見ることは稀です。暦年の表示くらいにしか使われないんじゃないでしょうか。映画などの制作年クレジット表記は有名ですね。
ローマ数字 – Wikipedia

計算に使うための数というより、覚え書きとしての文字列でしょう。

一匹  I
二匹  II
三匹  III
四匹  IIII
五匹  IIIV
六匹  IIIVI
七匹  IIIVII
八匹  IIIVIII
九匹  IIIVIIII
十匹  IIIVIIIX
十一匹 IIIVIIIXI
 :
1から順にメモしていき、「ここまで数えました」と延々 付け足していくのだそうです。

ローマ数字のVはVではない

ちなみにローマ数字で「5」を意味するVですが、起源的なグリフはVではありません。「カタカナのレ」に近い形が本式のようです。

まず4までを縦棒で書き、5番目を数えるところで4つめのIに斜線を書き足してVの字を作る。棒一本につき1対1対応という書式ですね。合理的。

へぇぇぇぇ(⊙Д⊙) …って思ったけど、日本語でも正の字が同じ構造でした。昔のひとって頭良いね。

るるぶ横浜 中華街 みなとみらい (国内シリーズ)

横浜みなとみらい地区を「MM」と略すことがありますが、これも近未来的な演出ですね。ただ MM は西暦2000年と考えることも出来るので、「20世紀の街」という意味にもなっちゃうんですけど。

Google計算機でローマ数字を計算する

さて。ここまでが基本の確認で、本題はここからです。

なんと、Google計算機でローマ数字の演算が出来ちゃうんですよ!

Google計算機でローマ数字の四則演算をする

では小手調べに引き算をしてみましょう。試しに以下の演算をしてみます。

ローマ数字で 100-43=57
100 – 43 = 57 【C – XLIII = LVII

おお!(・∀・){素晴らしき暗号臭…

ローマ数字なのに4000以上が扱える

次は足し算だ! …と言うことで 2000+2000=4000 をしてみようと思ったのですが、何だか様子が変です。

ローマ数字で 2000+2000=4000
2000 + 2000 = 4000【MM + MM = MMMM

あれ、4000が計算出来てしまいました。桁があふれるのを期待してたんだけど。

M=1000 なので MM + MM が 4000 なのは妥当なんですけど、一般にローマ数字は3999までしか表現できないことになってます。

ちなみにExcelにもROMAN関数が定義されていますが、こちらは4000以上でエラーとなります。

Mmm Mmm Mmm Mmm God Shuffled His Feet

Google計算機はローマ数字をいくつまで扱えるのか

一体Google計算機はいくつまでローマ数字の計算ができるんでしょうか。色々と試してみました。

ローマ数字で 3000+1999=4999
3000 + 1999 = 4999【MMM + MCMXCIX = MMMMCMXCIX

書いてて何が何だか判らなくなってきましたが、4999はローマ数字として扱えてるみたいです。

ローマ数字で 3000+2000=5000
2000 + 3000 = 5000【MM + MMM = 5000

でも5000では溢れることがわかりました。

Google計算機とローマ数字の内部処理

しかし、桁は溢れたもののエラーになったわけではありません。つまり内部的には正確に値が保持されてると考えられますね。

…ということは、Google計算機の他の機能と組み合わせることも出来そうです。他の数字との任意置換って出来ないのかな…。

ローマ数字とアラビア数字の変換

ローマ数字からアラビア数字に変換
ローマ数字とアラビア数字は相互可換

出来た。ローマ数字はアラビア数字に変換できます。

ヤバい、何これ楽しいんだけど。

ローマ数字とn進数の変換

もちろんGoogle先生の実力はこんなものではありません。ちょっと試してみたら色々な計算が出来ることが判りました。

ローマ数字から2進数へ

ローマ数字から繰り出す、まさかのバイナリ変換。なんと、2進数だけでなく8進数(octal)や16進数(hex)とも相互変換可能です。

ねぇ…ちょっと…誰得なの…?

【 関連記事 】

2進数 16進数 10進数 相互変換計算機2進数 16進数 10進数 相互変換計算機

binary、decimal、hexadecimalの相互計算機つくりました。

ローマ数字を使った階乗計算

あと、冗談半分でやってみたのがローマ数字を使った階乗計算。Xを使って10の階乗計算をしてみました。

10の階乗
X! = 10! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 = 3628800

確かに計算の意図は汲んでますけど、そもそもローマ時代に階乗記号は存在しないから…。(震え)

ワイルドカードを使った高度検索との併用

ちなみに、「CM * MIX * CD」のように、ローマ数字を使った掛け算も演算できます。

roman_number_search
CM * MIX * CD = 900 * 1009 * 400 = 363240000

…ということで 363240000 が返ってくるのですが、実際に計算させてみると「大した計算量ではない割に結果が返ってくるまで微妙に待たされることが判ります。

実はこの式、ワイルドカードによる曖昧検索としても成立するんですね。

「CM(音楽をRe)MIX(した)CD」みたいな話を引っかける検索文としても使えるんです。

残念ながら、この検索式でそれらしいページは拾えなかったんですけど、ダブルミーンで長文挑みたくなるあたりが全力厨二で素晴らしいですね。もしより良い組み合わせを思いついたら教えて下さい。(⊙Д⊙)

オリジナル版懐かしのCMソング大全
【楽天】
/ 【Amazon】

おわりに

1 2 3 4 5 6 7 8 9
一の位 I II III IV V VI VII VIII IX
十の位 X XX XXX IL L LX LXX LXXX XC
百の位 C CC CCC CD D DC DCC DCCC CM
千の位 M MM MMM

改めてローマ数字の規則性を見ると、Mの特異性が目立ちます。他の文字は直線とざっくり曲線で1画で書かれてるのに、Mだけ例外的な形をしてますね。

当時の古い書簡でどういう使われ方をしていたのか、調べてみたら割と面白いかも知れません。

Google計算機は漢数字も扱える。

【2016/06/08 本章追記】Twitterで教えて頂いたんですが、Google計算機って漢数字も扱えるみたいです。

七足す三掛ける五 → 七 + (三 *五) =二十二

だそうです。自然言語でちゃんと通るし、掛け算優位にもなってますね。すごいすごい。(⊙Д⊙)

@LimgTWさん、ありがとうございます!

【 更新履歴等 】

2014/06/03 初稿発表
2016/01/12 アイキャッチ画像の変更と、段落の流れを整理しました
2016/06/08 漢数字の話を追記しました。
旧題:ローマ数字の基礎知識とGoogle計算機の応用例がヤバい