拿VBScript的FormatNumber做个包装再在javascript里调用

解决方案 »

  1.   

    看到一个方法,太复杂了.
    function FormatNumber(srcStr,nAfterDot){
      var srcStr,nAfterDot;
      var resultStr,nTen;
      srcStr = ""+srcStr+"";
      strLen = srcStr.length;
      dotPos = srcStr.indexOf(".",0);
      if (dotPos == -1){
        resultStr = srcStr+".";
        for (i=0;i<nAfterDot;i++){
          resultStr = resultStr+"0";
        }
        return resultStr;
      }
      else{
        if ((strLen - dotPos - 1) >= nAfterDot){
          nAfter = dotPos + nAfterDot + 1;
          nTen =1;
          for(j=0;j<nAfterDot;j++){
            nTen = nTen*10;
          }
          resultStr = Math.round(parseFloat(srcStr)*nTen)/nTen;
          return resultStr;
        }
        else{
          resultStr = srcStr;
          for (i=0;i<(nAfterDot - strLen + dotPos + 1);i++){
            resultStr = resultStr+"0";
          }
          return resultStr;
        }
      }

     
      

  2.   

    to chucb(chucb) 
    好像没有这个函数。
      

  3.   

    是asp程序嘛?是的话,肯定可以,我用过n编了,如果是vbscript的话可以这样<scritp....>
    a=<%=formatnumber(i,2)%>
    </script>不过我不知道a变量是否会自动舍去小数点后面的0
      

  4.   

    这里是 JavaScript 论坛啊,当然是 JavaScript 的实现方法。
      

  5.   

    那就按照我说的做
    <scritp language=javascript>
    a='<%=formatnumber(i,2)%>';
    </script>
      

  6.   

    我的代码不在 ASP 中运行,是纯 JavaScript 静态代码,还是谢谢 chucb(chucb) 的回复。
      

  7.   

    看来是没有什么捷径,我写了如下代码来用:
    function FormatNumber(num,nAfterDot)
    {
    var rtn=num.toString();
    var a=rtn.lastIndexOf(".");
    if(a==-1)
    {
    rtn+=".";
    a=rtn.length-1;
    }
    for(var i=rtn.length-a-1;i<nAfterDot;i++)rtn+="0";
    return rtn;
    }