function uncommafy(str){
      var re=/\,/g;
  str=str.replace(re,'')
 if(isNaN(str))return alert('这不是一个正确的数字')
  return str
 }

解决方案 »

  1.   

    我觉得那个函数有些问题,做了写修改,我觉得这样可以满足你的要求了  
        function  commafy(num){  
               if(isNaN(num))return alert('这不是一个正确的数字')
       num  =  num+  "  ";
       var tmp=num.split('.')
       var a=tmp[0];
               var  re=/(-?\d+)(\d{3})/;
               while(re.test(a)){  
                  a=a.replace(re,  "$1,$2")  
               }
       num=a+'.'+tmp[1]
               return  num;  
         }
     function uncommafy(str){
          var re=/\,/g;
      str=str.replace(re,'')
     if(isNaN(str))return alert('这不是一个正确的数字')
      return str
     }
      

  2.   

    这个函数只是用到正则表达式,好像ie4以上就支持了,netscape的支持情况不太清楚
    1,234,567.891=>1234567.891 
    <script>
    function foo(str){
    var reg=/-?[0-9,]+/g;
    if(reg.test(str))
    return str.replace(/,/g,"");
    else
    return 0
    }
    alert(foo("1,234,567.891"))
    </script>
      

  3.   

    <script>
    //#################################################################################################
    //                                                                 数字格式化函数
    //  用法:本函数用来格式化数字。
    //  参数:num(数值型):要进行格式化的数值型变量;
    // decimalNum(整型) :要保留的小数位数;
    // bolLeadingZero (布尔型:true或 false):对-1<num<1之间的数是否要添加前导数字0;
    // bolParens (布尔型:true或 false):在负号后是否使用小括号;
    // bolCommas (布尔型:true或 false):是否用“,”隔开数字位。
    //  返回值:经过格式化的数字字符串。
    //#################################################################################################
    //  下面是例子:
    alert(FormatNumber(-0.5435345254644654,5,false,true,true))function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)

            if (isNaN(parseInt(num))) return "NaN"; var tmpNum = num;
    var iSign = num < 0 ? -1 : 1; // 得到数字符号

    // 调整小数点位数到给定的数字。
    tmpNum *= Math.pow(10,decimalNum);
    tmpNum = Math.round(Math.abs(tmpNum))
    tmpNum /= Math.pow(10,decimalNum);
    tmpNum *= iSign; // 重新调整符号


    // 把数值型转换成字符对象
    var tmpNumStr = new String(tmpNum); // 处理是否有前导0
    if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
    if (num > 0)
    tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
    else
    tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);

    //处理是否有逗号
    if (bolCommas && (num >= 1000 || num <= -1000)) {
    var iStart = tmpNumStr.indexOf(".");
    if (iStart < 0)
    iStart = tmpNumStr.length; iStart -= 3;
    while (iStart >= 1) {
    tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
    iStart -= 3;
    }
    } // 处理是否有括号
    if (bolParens && num < 0)
    tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")"; return tmpNumStr; // 返回格式化后字符串
    }
    </script>
      

  4.   

    第二.我还要讲千分位格式的数字转换成数字,用去动态的计算Total,这个转换怎么来实现啊?例如将 1,234,567.891 转换成1234567.891 ,小数数位没有限制.当做字符串,把逗号替换掉就可以了
      

  5.   

    关于精确度,ie5.5+使用alert((111.25).toFixed(5)),或者用下面这个函数代替,alert(myFixed(111.25,5))
    function myFixed(num,count){
         var tmp=String(num).split('.')
        var result='';
        result=tmp[0]+'.'+tmp[1].substring(0,count)
        for(i=tmp[1].length;i<count;i++)result+='0';
        return result
    }
      

  6.   

    关于精确度,ie5.5+使用alert((111.25).toFixed(5)),或者用下面这个函数代替,alert(myFixed(111.25,5))
    function myFixed(num,count){
         var tmp=String(num).split('.')
        var result='';
        result=tmp[0]+'.'+tmp[1].substring(0,count)
        for(i=tmp[1].length;i<count;i++)result+='0';
        return result
    }