Nickolay.info. 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 Кб)

 Онлайн-сервис преобразования римских и арабских чисел

Онлайн-версия может усовершенствоваться и чем-то отличаться.

Рейтинг@Mail.ru

вверх гостевая; E-mail