|
Pers.narod.ru. PHP. Статьи. Конвертирование римских и арабских чисел |
Насчёт конвертации арабских чисел в римские в Интернете легко найти исходники на нескольких языках, в том числе, и на PHP, для конвертирования из римской записи в арабскую сделать это труднее, так что вот обе функции на PHP в одном пакете:
function arabic_to_roman ($value) {
if ($value<0) $value=-$value;
if (!$value) return "0";
$thousands=(int)($value/1000);
$value-=$thousands*1000;
$result=str_repeat("M",$thousands);
$table=array (
900=>"CM",500=>"D",400=>"CD",100=>"C",
90=>"XC",50=>"L",40=>"XL",10=>"X",
9=>"IX",5=>"V",4=>"IV",1=>"I");
while($value) {
foreach($table as $part=>$fragment) if($part<=$value) break;
$amount=(int)($value/$part);
$value-=$part*$amount;
$result.=str_repeat($fragment,$amount);
}
return $result;
}
function roman_to_arabic ($value) {
$table=array (
'I'=>1,'V'=>5,'X'=>10,'L'=>50,'C'=>100,'D'=>500,'M'=>1000
);
$length=strlen($value);
$active=$result=0;
for ($i=$length-1; $i>-1; $i--) {
$next=$table[$value[$i]];
if ($next<$active) $result-=$next;
else $result+=$next;
$active=$next;
}
return $result;
}
Скачать пример в архиве ZIP (2 Кб)
Онлайн-сервис преобразования римских и арабских чисел
Онлайн-версия может усовершенствоваться и чем-то отличаться.
|
|