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(算法)