function convert(num) {
//数级定义
var roman = {
1000 : 'M',
500 : 'D',
100 : 'C',
50 : 'L',
10 : 'X',
5 : 'V',
1 : 'I'
}, res='', i = '', j = 0, p =0, indexes = [], n=0;
for(i in roman){
indexes.push(i - 0);
}
//倒序
indexes.sort(function(p, n){
return n - p;
});
indexes.forEach(function(i){
p = num / i;
if(p < 1 || num == 0) return;
//k是基数,比如说1~9基数是1,10~99的基数是10,101~999基数是100
var k = i/((i+"")[0]);
/**
*罗马数字规则,进9 和 进4 不一样,
*进9:本级基数 + 是下级数,
*进4: 本级数 + 下级数
*/
//进9
if( ((num + k) / ( i + 5 * k)) >= 1 && indexes.indexOf(i + 5 * k) > -1){
res += roman[k] + roman[i + 5 * k];
num -= i + 4 * k;//本级数 + 4倍的基数
}else{
n = Math.floor(p);
if(n == 4 && indexes.indexOf(i + k * 4) > -1){//进4
res += roman[i] + roman[i + k * 4];
}else{
for(j = 0; j<n; j++){
res += roman[i];
}
}
num -= n * i;
}
});
return res;
}
convert(9002);