<?php
function romToDec ($dec) {
$return = '';
while ($dec >= 1000) {
$dec -= 1000;
$return .= 'M';
}
if ($dec >= 900) {
$dec -= 900;
$return .= 'CM';
}
if ($dec >= 500) {
$dec -= 500;
$return .= 'D';
}
if ($dec >= 400) {
$dec -= 400;
$return .= 'CD';
}
while ($dec >= 100) {
$dec -= 100;
$return .= 'C';
}
if ($dec >= 90) {
$dec -= 90;
$return .= 'XC';
}
if ($dec >= 50) {
$dec -= 50;
$return .= 'L';
}
if ($dec >= 40) {
$dec -= 40;
$return .= 'XL';
}
while ($dec >= 10) {
$dec -= 10;
$return .= 'X';
}
if ($dec == 9) {
$dec = 0;
$return .= 'IX';
}
if ($dec >= 5) {
$dec -= 5;
$return .= 'V';
}
if ($dec == 4) {
$dec = 0;
$return .= 'IV';
}
while ($dec >= 1) {
$dec -= 1;
$return .= 'I';
}
return $return;
}
$tests = array(1, 999, 2016, 23458, 104696);
foreach ($tests as $test) {
echo $test.' → '.romToDec($test)."\n";
}
?>
- Output for 5.5.24 - 5.5.35, 5.6.8 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.31, 8.2.0 - 8.2.27, 8.3.0 - 8.3.19, 8.4.1 - 8.4.5
- 1 → I
999 → CMXCIX
2016 → MMXVI
23458 → MMMMMMMMMMMMMMMMMMMMMMMCDLVIII
104696 → MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMDCXCVI
preferences:
172.99 ms | 409 KiB | 5 Q