zoukankan      html  css  js  c++  java
  • [JS]将给定的数字转换成罗马数字

    题目描述:将给定的数字转换成罗马数字。没有特大数字。


    注意点:

    • js中的除法返回完整的商,利用Math.floor()向下取整
    • 对于4,5,9都是要处理的,不同于其他数字的
    • 每次循环之后原数都要减去每次处理的数

    方法:

    1. 按照1000,100,10,1来进行分步,所以循环四次。
    2. 在循环内部进行位数的处理,先看位数是否是9,是9,字符串直接加入相应字符。
    3. 否是否>=5,是的先将5的字符放入。
    4. 再处理剩下的,如果剩余==4,加入4的特殊字符,否则直接repeat对应位的字符。

     1 function convert(num) {
     2 var n,m,str="",i=1000;
     3   for(;i>0;i/=10){
     4     n=Math.floor(num/i);//向下取整
     5     m=n;
     6     switch(i){
     7       case 1000:
     8     {
     9       
    10       if(m>0) str+="M".repeat(n); 
    11       num-=n*i;//减去
    12       break;
    13     }
    14       case 100:
    15     {
    16       if(n==9) {str+="CM";m-=9;}
    17       if(m>=5) {str+="D"; m-=5;}
    18       if(m==4) {str+="CD"; m-=4;}
    19       if(m>0) str+="C".repeat(m);
    20       num-=n*i;
    21       break;
    22     }
    23       case 10:
    24     { if(n==9) {str+="XC";m-=9;}
    25       if(m>=5) {str+="L"; m-=5;}
    26       if(m==4) {str+="XL"; m-=4;}
    27       if(m>0) str+="X".repeat(m);
    28       num-=n*i;
    29       break;
    30     }
    31       case 1:
    32     {
    33        if(n==9) {str+="IX";m-=9;}
    34       if(m>=5) {str+="V"; m-=5;}
    35       if(m==4) {str+="IV"; m-=4;}
    36       if(m>0) str+="I".repeat(m);
    37       num-=n*i;
    38       break;
    39     }
    40   }
    41   }
    42  
    43   return str;
    44 }
    45 
    46 convert(16);
    原创供学习参考使用,转载请注明出处http://www.cnblogs.com/cuphoria/ @jm_epiphany
  • 相关阅读:
    PHP实现微信退款的分析与源码实现
    thinkphp对180万数据批量更新支持事务回滚
    在线工具
    php连接redis
    Redis PHP连接操作
    阿里大于短信接口整合TP5
    Unity3d中如何查找一个脚本被挂在那些预设上面?
    泰课在线夜猫的贪食蛇
    EasyTouch5ForSiki学院
    unity游戏热更新
  • 原文地址:https://www.cnblogs.com/cuphoria/p/9732242.html
Copyright © 2011-2022 走看看