Римские цифры
14 ноября 2011 г.
Коварно похищенная с
одного из PHP-форумов и чуть-чуть перекроенная функция берет нормальное число и делает из него римское. Точнее, из его модуля (отрицательных у римлян не было).
function num_roman($number)
{
if(!$number = abs($number)) return 0;
$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');
$result = str_repeat('M',$number/1000);
while($number)
{
foreach($table as $part=>$fragment) if($part<=$number) break;
$amount = (int)($number/$part);
$number -= $part*$amount;
$result .= str_repeat($fragment,$amount);
}
return $result;
}