2025-05-12 05:38:44 +09:00

40 lines
1.1 KiB
JavaScript

'use strict';
/**
* Converts a decimal number to roman numeral.
* https://stackoverflow.com/questions/9083037/convert-a-number-into-a-roman-numeral-in-javascript
*
* @param {Number} number
* @api private.
*/
exports.romanize = function(num) {
if (isNaN(num))
return NaN;
var digits = String(+num).split(""),
key = ["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM",
"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC",
"","I","II","III","IV","V","VI","VII","VIII","IX"],
roman = "",
i = 3;
while (i--)
roman = (key[+digits.pop() + (i * 10)] || "") + roman;
return Array(+digits.join("") + 1).join("M") + roman;
}
/**
* Converts a decimal number to alphanumeric numeral.
* https://stackoverflow.com/questions/45787459/convert-number-to-alphabet-string-javascript
*
* @param {Number} number
* @api private.
*/
exports.alphanumeric = function(num) {
var s = '', t;
while (num > 0) {
t = (num - 1) % 26;
s = String.fromCharCode(65 + t) + s;
num = (num - t)/26 | 0;
}
return s || undefined;
}