JavaScript练习 - 数字转换成罗马数字

本文介绍了一种将阿拉伯数字转换为罗马数字的实现方法。该方法通过分解数字、逐位转换并组合的方式进行,适用于1至3999之间的数字。文章详细展示了代码逻辑,并通过多个测试案例验证了其正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要:以下数字转换成罗马数字的方法估计是最傻的办法了。

一、思路

(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"。

五、结论

妥妥的,测试全部通过,投入使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值