round(round(201.657+298.54,2)+round(56.77+345.789),2)如何使用正规式 或 其它方法,把以上字符串变为下列字符串
Math.round((Math.round((201.657+298.54)*100)/100+Math.round(56.77+345.789))*100)/100

解决方案 »

  1.   

    你说的是正则表达式???var s='round(round(201.657+298.54,2)+round(56.77+345.789),2)';
    s=s.replace(/round/g,'Math.round');
      

  2.   

    var s='round(round(201.657+298.54,2)+round(56.77+345.789),2)';
    s=s.replace(/round/ig,'Math.round').replace(/,2\)/ig,")/100");
    alert(s);
      

  3.   

    如果這樣呢?
    if(G18="uu,ii",round(255.655+236.32,2),round(2562.556+6335.3334,3))怎麼變為if(G18=="uu,ii"){
    return Math.round((255.655+236.32)*100)/100;
    }else{
    return Math.round((2562.556+6335.3334,3)*1000)/1000;
    }
      

  4.   

    怎么解释excel公式(部份公式),转换为javascript如果用2楼的方法,比较难处理!
      

  5.   


    var s=['round(255.655+236.32,2)','round(2562.556+6335.3334,3)'];
    for(var i=s.length-1;i>=0;i--){
        alert(s[i]+'\r\n'+s[i].replace(/round/g,'Math.round').replace(/(\d+.?\d*)([\+])(\d+.?\d*),(\d+)\)/g,function(s,n1,op,n2,p){
            var x=Math.pow(10,p);
            return '('+n1+op+n2+')*'+x+')/'+x
        }));
    }注:最后一个正则表达式中的(\d+.?\d*)不是很严谨,不过影响不大。
      

  6.   

    likeajin
    提到的算法,不能判断,“)”是属于哪个函数的,多重if或round的时候,就计算错误“
    if(G18="uu,ii",round(255.655+236.32,2),round(2562.556+6335.3334,3))
    ”怎麼變為

    if(G18=="uu,ii"){
    return Math.round((255.655+236.32)*100)/100;
    }else{
    return Math.round((2562.556+6335.3334,3)*1000)/1000;
    }