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)