Question

I have an array that output as roman number:

 var details = lst_details[sltindex].split(';');
 detail[9];//is roman number and I want it as an integer;

The array of details[9] is a roman numeral so I want to convert it as integer number. Anyone know help me please,thanks.

Was it helpful?

Solution

Number.prototype.toRoman= function(){
    var n= Math.floor(this),val,s= '',limit= 3999,i= 0;
    v= [1000,900,500,400,100,90,50,40,10,9,5,4,1],
    r= ['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I'];
    if(n< 1 || n> limit) return '';
    while(i<13){
        val= v[i];
        while(n>= val){
            n-= val;
            s+= r[i];
        }
        if(n== 0) return s;
        ++i;
    }
    return '';
}
function rtonum (s){
    s= String(s).toUpperCase();
    if(s.length> 15 ||  /[^MDCLXVI]/.test(s)) return NaN;
    var L= s.length,sum= 0,i= 0,next,val,
    R={
        M:1000,D:500,C:100,L:50,X:10,V:5,I:1
    };  
    while(i< L){
        val= s.charAt(i++);
        if(!R[val]) return NaN;
        val= R[val];
        next= R[(s.charAt(i) || 'N')] || 0;
        if(next> val) val*= -1;
        sum+= val;
    }
    if(sum.toRoman()== s) return sum;
    return NaN;
}
var n=rtonum('c');
alert(n); 

From Convert a number into a Roman Numeral in javaScript.

jsfiddle

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top