CengageRomans
by Matthew Vasallo
JavaScript
var RomanMath = {};
RomanMath.ConvertToRomanNumeral = function (num) {
var answer = "";
answer += RomanMath._convertSingleArabicPlaceToRoman(num,1000);
answer += RomanMath._convertSingleArabicPlaceToRoman(num,100);
answer += RomanMath._convertSingleArabicPlaceToRoman(num,10);
answer += RomanMath._convertSingleArabicPlaceToRoman(num,1);
return answer;
};
RomanMath._convertSingleArabicPlaceToRoman = function ( num, placeToCalculate ) {
var romanTens = ["I", "X", "C", "M"];
var romanFives = ["V", "L", "D"];
var placeRemainder = Math.floor( (num % (placeToCalculate *10)) / placeToCalculate);
var baseIndex = (placeToCalculate.toString().length - 1)
var mod5Num = placeRemainder % 5;
var answer = "";
if (mod5Num === 4) {
if (placeRemainder < 5) {
answer = romanFives[baseIndex];
} else {
answer = romanTens[baseIndex + 1];
}
answer = romanTens[baseIndex] + answer;
} else if (placeRemainder >= 5 &&
mod5Num >= 0) {
answer = romanFives[baseIndex] + RomanMath._add1To3(romanTens[baseIndex], mod5Num);
}
else {
answer = RomanMath._add1To3(romanTens[baseIndex], placeRemainder);
}
return answer;
};
RomanMath._add1To3 = function (numeral, number) {
var i = number;
var answer = "";
while (i) {
answer += numeral;
i--;
}
return answer;
};