JSFiddle - React, Tailwind, and code Playground

by Steven Senkus

JavaScript

var intToRoman = function(num) {
    let romanNumeral = "";

    while (Math.floor(num / 1000) !== 0) {
        romanNumeral += 'M';
        num -= 1000;
    }

    if (Math.floor(num / 900) !== 0) {
        romanNumeral += 'CM';
        num -= 900;
    }
    if (Math.floor(num / 500) !== 0) {
        romanNumeral += 'D';
        num -= 500;
    }
    if (Math.floor(num / 400) !== 0) {
        romanNumeral += 'CD';
        num -= 400;
    } else {
        while (Math.floor(num / 100) !== 0) {
            romanNumeral += 'C';
            num -= 100;
        }
    }

    if (Math.floor(num / 90) !== 0) {
        romanNumeral += 'XC';
        num -= 90;
    }
    if (Math.floor(num / 50) !== 0) {
        romanNumeral += 'L';
        num -= 50;
    }
    if (Math.floor(num / 40) !== 0) {
        romanNumeral += 'XL';
        num -= 40;
    } else {
        while (Math.floor(num / 10) !== 0) {
            romanNumeral += 'X';
            num -= 10;
        }
    }

    if (Math.floor(num / 9) !== 0) {
        romanNumeral += 'IX';
        num -= 9;
    }
    if (Math.floor(num / 5) !== 0) {
        romanNumeral += 'V';
        num -= 5;
    }
    if (Math.floor(num / 4) !== 0) {
        romanNumeral += 'IV';
        num -= 4;
    } else {
        while (Math.floor(num / 1) !== 0) {
            romanNumeral += 'I';
            num -= 1;
        }
    }

    if (num > 0) {
        throw new Error(`Conversion failed! ${num} is still remains!`)
    }
    return romanNumeral;
};

for (let num = 1; num < 100; num++) {
    console.log(num, intToRoman(num));
}