摘要:以下数字转换成罗马数字的方法估计是最傻的办法了。
一、思路
(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"。
五、结论
妥妥的,测试全部通过,投入使用。
本文介绍了一种将阿拉伯数字转换为罗马数字的实现方法。该方法通过分解数字、逐位转换并组合的方式进行,适用于1至3999之间的数字。文章详细展示了代码逻辑,并通过多个测试案例验证了其正确性。
3886

被折叠的 条评论
为什么被折叠?



