Excelのワークシート関数に「ROMAN」があります。整数をローマ数字に変換します。
これをJavaScriptで書いてみました。
Excelと同様に3999まで対応しています。
function vb_roman(num) {
if(num < 0 | num > 3999) {
return "";
}
ar1 = ["", "M", "MM", "MMM"];
ar2 = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"];
ar3 = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC", "C"];
ar4 = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"];
r = ar1[Math.floor(num / 1000) % 10];
r += ar2[Math.floor(num / 100) % 10];
r += ar3[Math.floor(num / 10) % 10];
r += ar4[num % 10];
return r;
}
if(num < 0 | num > 3999) {
return "";
}
ar1 = ["", "M", "MM", "MMM"];
ar2 = ["", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"];
ar3 = ["", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC", "C"];
ar4 = ["", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X"];
r = ar1[Math.floor(num / 1000) % 10];
r += ar2[Math.floor(num / 100) % 10];
r += ar3[Math.floor(num / 10) % 10];
r += ar4[num % 10];
return r;
}
しかし面倒な表記をしていたものだと感心します。
2018年9月8日追記
Text2Whatで試せます。
コメント