JSFiddle - React, Tailwind, and code Playground
JavaScript
var symbolCount = 0;
var rNum = 0;
var romanNStr = ""; //組出的羅馬數字
var output = "";
function convertToRoman(num) {
rNum= num;
//先算開頭M的個數
symbolCount = Math.floor(rNum/1000);
rNum = rNum -(1000*symbolCount);
for(var i = 0; i < symbolCount; i++ ){
romanNStr+="M";
}
calSymbol("M", "D", "C", 100);
calSymbol("C", "L", "X", 10);
calSymbol("X", "V", "I", 1);
output = romanNStr;
romanNStr = "";
console.log(output);
return output;
;
}
//以三個為一組計算
function calSymbol(b, m, s, val){
symbolCount = Math.floor(rNum / val);
if(symbolCount == 9){
romanNStr += s + b;
rNum -= (9*val);
symbolCount = 0;
}
if(symbolCount == 4){
romanNStr += s + m;
rNum -= (4*val);
symbolCount = 0;
}
if(symbolCount >= 5){
romanNStr += m;
rNum -= (5 * val);
symbolCount -= 5;
}
for(var i = 0; i < symbolCount ; i++){
romanNStr += s;
rNum -= (1 * val);
}
}
convertToRoman(2)
convertToRoman(3)
convertToRoman(4)
convertToRoman(5)
convertToRoman(9)
convertToRoman(12)
convertToRoman(16)
convertToRoman(29)
convertToRoman(44)
convertToRoman(45)
convertToRoman(68)
convertToRoman(83)
convertToRoman(97)
convertToRoman(99)
convertToRoman(500)
convertToRoman(501)
convertToRoman(649)
convertToRoman(798)
convertToRoman(891)
convertToRoman(1000)
convertToRoman(1004)
convertToRoman(1006)
convertToRoman(1023)
convertToRoman(2014)
convertToRoman(3999)