JavaScript實現1-4000內阿拉伯數字轉換為羅馬數字
阿新 • • 發佈:2019-01-03
還是挺複雜滴,主要的點就是:1)連寫的數字不能超過三次,也就是III只能寫到3,想玩4,6,7...就得想招啦。2)大左小右為+,小左大右為-,具體數字表示起來取方便的那種。
既然有了上述規則,我們就可以寫啦,先上一個複雜版。超級複雜版:
var a=0; var b=0; var c=0; var d=0; var y=num.toString(); var newN=y.split("");//數字分開成陣列['3','6'] var num1=newN.length; if(num1==1){ d=num; }else if(num1==2){ c=parseInt(newN[0]); d=parseInt(newN[1]); }else if(num1==3){ b=parseInt(newN[0]); c=parseInt(newN[1]); d=parseInt(newN[2]); }else if(num1==4){ a=parseInt(newN[0]); b=parseInt(newN[1]); c=parseInt(newN[2]); d=parseInt(newN[3]); } var rea=""; var reb=""; var rec=""; var red=""; for(i=1;i<=a;i++){ rea=rea+"M"; } if(b<4){ for(i=1;i<=b;i++){ reb=reb+"C"; } }else if(b==4){ reb="CD"; }else if(b<9){ reb="D"; for(i=1;i<=b-5;i++){ reb=reb+"C"; } }else if(b==9){ reb="CM"; } if(c<4){ for(i=1;i<=c;i++){ rec=rec+"X"; } }else if(c==4){ rec="XL"; }else if(c<9){ rec="L"; for(i=1;i<=c-5;i++){ rec=rec+"X"; } }else if(c==9){ rec="XC"; } if(d<4){ for(i=1;i<=d;i++){ red=red+"I"; } }else if(d==4){ red="IV"; }else if(d<9){ red="V"; for(i=1;i<=d-5;i++){ red=red+"I";} }else if(d==9){ red="IX"; } var result=rea+reb+rec+red; return result; }
簡單來說,分出4位,把每一位的情況都做一個判斷。(。・∀・)ノ゙嗨,您累不累喲。作為猿,我們的存在就是為了偷懶嘛。於是乎,只需要一個小小的方法,就可以避免一大串的判斷。
超級簡單版:
function convert(num) { var a=[["","I","II","III","IV","V","VI","VII","VIII","IX"], ["","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"],
["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"], ["","M","MM","MMM"]]; var i=a[3][Math.floor(num/1000)]; var j=a[2][Math.floor(num%1000/100)]; var k=a[1][Math.floor(num%100/10)]; var l=a[0][num%10]; return i+j+k+l; } convert(36);