Q: 将给定的数字转换成罗马数字。
所有返回的 罗马数字 都应该是大写形式。
function convert(num) { var nums = [1000,900,500,400,100,90,50,40,10,9,5,4,1]; var romans =["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]; var str = '';
//给定数字拆分为千位、百位、十位、个位,然后再由大至小依次进行拼接。 //对 nums 的每一项进行遍历,每当传入的 num 大于或等于当前项时, //将其对应的罗马数字推入之前声明的字符串,并把 num 值减去当前符合条件的数值。
nums.forEach(function(value,index,nums){ while(num >= value){ str += romans[index]; num -= value; } }); return str; } convert(1000);
>> M
function convert(num) { var nums = [1000,900,500,400,100,90,50,40,10,9,5,4,1]; var romans =["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]; var str = '';
//改写一下
for (var i=0;i<nums.length;i++){ while(num >= nums[i]){ str += romans[i]; num -= nums[i]; } } return str; } convert(1234);
>> MCCXXXIV
推酷:Roman Numeral Converter(算法)