摘要:以下数字转换成罗马数字的方法估计是最傻的办法了。
一、思路
(1)把数字拆分,把每个数字都存入数组arr中;
(2)将数组arr中非0的数字存入新的数组arr1中;
(3)把数组arr1中的每个数字分别转化成罗马数字,并存入数组arr3中;
(4)将罗马数字拼接,即将数组arr3转为字符串。
二、知识点
(1)string.push();
(2)Math.floor(count/pagesize); // 向下整除,4/3=1。
(3)switch 语句 // 这部分代码的使用估计是最傻最傻,没有之一的了。
swith(n) {
caes 1 : 执行代码块1;
break;
caes 2: 执行代码块2;
break; }
(4)string.join("");
三、代码
function convert(num) {
//把数字拆分,把每个数字都存入数组arr中
var n0 = Math.floor(num/1000)*1000;
var n1 = Math.floor((num-n0)/100)*100;
var n2 = Math.floor((num-n1-n0)/10)*10;
var n3 = num-n0-n1-n2;
var arr = [];
arr.push(n0,n1,n2,n3);
//把数字拆分,把每个数字都存入数组arr中
var arr1 = [];
for (var i in arr)
if (arr[i] >0)
arr1.push(arr[i] );
//把数组arr1中的每个数字分别转化成罗马数字,并存入数组arr3中(篇幅有限,只能转化1到3999的数字);
var arr3=[];
for( i in arr1) {
switch (arr1[i]) {
case 1 :
arr3.push("I");
break;
case 2 :
arr3.push("II");
break;
case 3 :
arr3.push("III");
break;
case 4 :
arr3.push("IV");
break;
case 5 :
arr3.push("V");
break;
case 6 :
arr3.push("VI");
break;
case 7 :
arr3.push("VII");
break;
case 8 :
arr3.push("VIII");
break;
case 9 :
arr3.push("IX");
break;
case 10 :
arr3.push("X");
break;
case 20 :
arr3.push("XX");
break;
case 30 :
arr3.push("XXX");
break;
case 40 :
arr3.push("XL");
break;
case 50 :
arr3.push("L");
break;
case 60 :
arr3.push("LX");
break;
case 70 :
arr3.push("LXX");
break;
case 80 :
arr3.push("LXXX");
break;
case 90 :
arr3.push("XC");
break;
case 100 :
arr3.push("C");
break;
case 200 :
arr3.push("CC");
break;
case 300 :
arr3.push("CCC");
break;
case 400 :
arr3.push("CD");
break;
case 500 :
arr3.push("D");
break;
case 600:
arr3.push("DC");
break;
case 700 :
arr3.push("DCC");
break;
case 800 :
arr3.push("DCCC");
break;
case 900:
arr3.push("CM");
break;
case 1000 :
arr3.push("M");
break;
case 2000 :
arr3.push("MM");
break;
case 3000 :
arr3.push("MMM");
break;
}
}
//将罗马数字拼接,即将数组arr3转为字符串后返回。
var arr2= arr3.join("");
return arr2;
}
四、测试案例
convert(2)
应该返回 "II"。
convert(3)
应该返回 "III"。
convert(4)
应该返回 "IV"。
convert(9)
应该返回 "IX"。
convert(29)
应该返回 "XXIX"。
convert(44)
应该返回 "XLIV"
convert(501)
应该返回 "DI"。convert(649)
应该返回 "DCXLIX"。
convert(891)
应该返回 "DCCCXCI"。
convert(1023)
应该返回 "MXXIII"。
convert(3999)
应该返回 "MMMCMXCIX"。
五、结论
妥妥的,测试全部通过,投入使用。