Numbers_Roman

Numbers_Roman は、 アラビア数字 (23 のような形式) をローマ数字 (XXIII のような形式) に変換したり、その逆の変換をしたりするメソッドを提供します。

注意 どちらのメソッドも静的メソッドなので、 オブジェクトのインスタンスを作成する必要はありません。

アラビア数字からローマ数字への変換

静的メソッド toNumeral を使用します。 このメソッドは 1 から 5 999 999 までの数を扱うことができます。 それより大きな値を指定してもエラーにはなりませんが、 歴史的に正しい結果とは異なる値に変換されます。

2 番目のパラメータである $uppercase は、 結果を大文字で出力する (デフォルト) かどうかを設定します。 オーバースコアを HTML のコードで出力する必要がある場合は、 3 番目のパラメータを設定します。これは、 3999 より大きな数を扱う際に必要となります。 このパラメータを false にすると、文字の前にアンダースコア _ が付加されます。

例 55-1アラビア数字からローマ数字への変換


<?php
require_once 'Numbers/Roman.php';

echo Numbers_Roman::toNumeral(23);
// 結果は XXIII となります

echo Numbers_Roman::toNumeral(23false);
// 結果は xxiii となります
?>

ローマ数字からアラビア数字への変換

静的メソッド toNumber を使用すると、 XLII のようなローマ数字を 42 のようなアラビア数字に変換することができます。 1000 より大きい数字を扱う際には、文字の前にアンダースコアを付加します。

表 55-1ローマ数字からアラビア数字への変換テーブル

ローマ数字アラビア数字
I1
V5
X10
L50
C100
D500
M1000
S, _V5000
R, _X10 000
P, _L50 000
Q, _C100 000
O, _D500 000
N, _M1 000 000

例 55-2ローマ数字からアラビア数字への変換


<?php
require_once 'Numbers/Roman.php';

echo Numbers_Roman::toNumber('XLII');
// 結果は 42 となります
?>