<script>
function GetValid(num,n)//num:数字;n:位数
{
     return Math.round(num*Math.pow(10,n))/Math.pow(10,n);
    }
alert(GetValid("0.123323",3));
</script>

解决方案 »

  1.   


    用:
    numberstring.Precision(n)
      

  2.   

    我自己写了一个,大家看看Number.prototype.toFixed = function(len)
    {
        //IE5.5支持toFixed,但是IE5.0不支持.兼容性.所以,IE5.0下自己实现.
        return Math.round(this * Math.pow(10,len))/Math.pow(10,len)
    }
    //yyy为输入的域 传参数时用'',len为保留的有效位数
    function xiao(yyy,len){
    var name;
    var cell = event.srcElement.parentElement;
        var rowIndex = cell.parentElement.rowIndex; //当前行数
        var obj=document.getElementsByName(yyy); if(rowIndex>0){
           name=obj[rowIndex].value;//需要加多行的处理,name为yyy域的值
        }
    if(rowIndex==0){
            try{
            name=obj[rowIndex].value;
           } catch(e){
            name=obj.value; }
    }
         
    if(name!=""&&parseFloat(name)>=0){
       if(name.indexOf('.')!=-1) {//有小数点的情况
           var cut = name.split('.');//cut为存储整数和小数部分得数祖
       var intpart=cut[0];//带有小数点数字得整数部分
       var decimalpart=cut[1];//带有小数点数字得小数部分
      if(intpart!=0){ //整数部分不适0
        if(intpart.length>len){ //如果整数部分大=于有效位数
        var place=intpart.length-len;//位差
    var substringplace=intpart.length-place//应该截取的整数部分的位置
        var intlen=intpart.substring(0,substringplace) //len长度的整数位数
        name=intlen*10
    }else 
    if(intpart.length==len){//如果整数部分等于有效位数
       name=intpart;
    }else
    if(intpart.length<len){//如果整数部分小于俄有效位数
       var place=len-intpart.length;
       if(decimalpart.length>=place){
       name=intpart+"."+ decimalpart.substring(0,place);
    }

    }
       }else{ //整数部分是0
             if(decimalpart.length>=len){
     name=intpart+"."+decimalpart.substring(0,len)
     }else{
     name=name+"0"
     }
       
       }


          }else if(name.indexOf('.')==-1){ //没有小数点的情况 9999
       if(name.length>len){
          var place=name.length-len
      var substringplace=name.length-place
      name=name.substring(0,substringplace)
      name=name*10
       }else if(name.length<len){
             var place=len-name.length
      name=name+"."
      for(var i=0;i<place;i++){
       name=name+"0"
      }
          }
    }
    form1.yyy.value=name  

         }
        








    }
      

  3.   

    不好意思,numberstring.toPrecision(n)计算出来的是科学记数法表示的!!
    下面这个段是我自己做的:
    <html><head>
    <script language="Jscript">
    function GetValid(num,n)//num:数字;n:位数
    {
    var num1,num2,num3;
    num1=num/1;//数字字串转换为数字类型
    num2=""+(num1.toFixed(0));//取得数字整数部份
    num3=Math.pow(10,num2.length);//取得整数的位数。
    num1=num1/num3;//将数字全部缩小为小于1的小数。
    return num3*(num1.toFixed(n));//
    }
    </script>
    </head><body>
    <input name="www" value=133325.68>
    <input name="eee" value=3>
    <input type=button onclick="alert(GetValid(document.all.www.value,document.all.eee.value));" value="compute">
    </body></html>
      

  4.   

    qiqunet(瑞旗·广东)写的代码简练的很阿有一点小问题 就是 如果输入 0.1234 应该保留为 0.123 ,你的程序结果为0.12差了一位·
    还有一点就是如果输入 0.12 保留有效数字后应该为 0.120.
      

  5.   

    刚才因为要去上班(实际是我已迟到了),所以来不及继续就先回贴再说,呵呵更正如下
    <html><head>
    <script language="Jscript">
    function GetValid(num,n)//num:数字;n:位数
    {
    var num1,num2,num3;
    num1=num/1;//数字字串转换为数字类型
    num2=""+(num1.toFixed(0));//取得数字整数部份
    num3=Math.pow(10,num2.length);//取得整数的位数。
    num1=num1/num3;//将数字全部缩小为小于1的小数。
    num1=num3*(num1.toFixed(n));//根据指定有效位算出有效数字,但由于数字后面的“无效”数字“0”系统会自动取消,所以要做以下工作:
    num2=""+num1;//字串化数字。
    num3=(num2.indexOf(".")>-1)?num2.indexOf("."):0;//看看数字中是否包含小数点,如果包含,有效数字的总位数应加 1。
    num2=(n/1-num2.length)>-1?num2+"00000000000000000000".substring(n/1-num2.length+num3):num2;//根据缺失的位数补回缺失的“0”
    return num2;
    }
    </script>
    </head><body>
    <input name="www" value=133325.68>
    <input name="eee" value=3>
    <input type=button onclick="alert(GetValid(document.all.www.value,document.all.eee.value));" value="compute">
    </body></html>
      

  6.   


    刚才又错了一个地方:
    最后一版:<html><head>
    <script language="Jscript">
    function GetValid(num,n)//num:数字;n:位数
    {
    var num1,num2,num3;
    num1=num/1;//数字字串转换为数字类型
    num2=""+(num1.toFixed(0));//取得数字整数部份
    num3=Math.pow(10,num2.length);//取得整数的位数。
    num1=num1/num3;//将数字全部缩小为小于1的小数。
    num1=num3*(num1.toFixed(n));//根据指定有效位算出有效数字,但由于数字后面的“无效”数字“0”系统会自动取消,所以要做以下工作:
    num2=""+num1;//字串化数字。
    num3=(num2.indexOf(".")>-1)?1:0;//看看数字中是否包含小数点,如果包含,有效数字的总位数应加 1。
    num2+=(n/1-num2.length)>-1?"00000000000000000000".substring(0,n/1-num2.length+num3):"";//根据缺失的位数补回缺失的“0”
    return num2;
    }
    </script>
    </head><body>
    <input name="www" value=133325.68>
    <input name="eee" value=3>
    <input type=button onclick="alert(GetValid(document.all.www.value,document.all.eee.value));" value="compute">
    </body></html>
      

  7.   

    <script>
    function getV(num)
    {
    if(num>=1000)
    {
    num1=(""+num).substring(0,3)+"0";
    return num1;
    }
    if(num>=100)
    {
    num1=(""+num).substring(0,3)
    return num1;
    }if(num<1)
    {
    num1=(""+num+"00000").substring(0,5);
    return num1;
    }
    if(num>=1&&num<10)
    {
    num1=num*100;
    num1=(""+num1).substring(0,3);
    num1=(num1/100).toFixed(2);
    return num1;
    }
    if(num>=10&&num<100)
    {
    num1=num*10;
    num1=(""+num1).substring(0,3);
    num1=(num1/10).toFixed(1);
    return num1;
    }
    }alert(getV(10))
    </script>
      

  8.   


    这个应该没有任何问题了吧?<html><head>
    <script language="Javascript">
    function GetValid(num,n){
      var num1,num2,num3,num4;
      num1=""+num;//数字字串转换为字符。
      if(num1.indexOf(".")>-1){
         num4=num1.substring(0,num1.indexOf("."));
         num1+="000000000000000000000000000000000000000000000";
      }else{
         num4=num1;//取整数部份。
         num1+=".00000000000000000000000000000000000000000000";}
      n=n/1;  // n 转换为数值型数据。
      num3=""; //初始化num3变量。
      for(i=0;i<=num1.length;i++){
         num2=num1.substring(i,i+1)//取一个字符。
         n+=num2=="."?1:0;//如果有小数点“.”,并且小数点处的位置小于n的话,有效数位算上小数点。
         num3+=num2;//重组字串。
         i=i>=(n-1)?num1.length+2:i//如果有效数字位数已够,就退出循环。
      }
      num3+=num4.length>n?"000000000000000".substring(0,num4.length-n):"";//当不含小数的有效数字位数不够就补“0”
      return num3;
    }
    </script>
    </head><body>
    <input name="www" value=9999.999>
    <input name="eee" value=3>
    <input type=button onclick="alert(GetValid(document.all.www.value,document.all.eee.value));" value="compute">
    </body></html>
      

  9.   


    更好一点的:<html><head>
    <script language="Javascript">
    function GetValid(num,n){
      var num1,num2,num3,num4;
      num1=""+num;//数字字串转换为字符。
      n=n/1;
      if(num1.indexOf(".")>-1){
         num4=num1.substring(0,num1.indexOf("."));
         num1+="000000000000000000000000000000000000000000000";
         num3=num1.substring(0,n+1);  }else{
         num4=num1;//取整数部份。
         num1+=".00000000000000000000000000000000000000000000";
         num3=num1.substring(0,n);}
      num3+=num4.length>n?"000000000000000".substring(0,num4.length-n):"";//当不含小数的有效数字位数不够就补“0”
      return num3;
    }
    </script>
    </head><body>
    <input name="www" value=9999.999>
    <input name="eee" value=3>
    <input type=button onclick="alert(GetValid(document.all.www.value,document.all.eee.value));" value="compute">
    </body></html>
      

  10.   

    修改一下num>=1000和num>=100
    合起来if(num>=100)
    {
    num1=""+num;
    bb="";
    len=num1.length;
    for(var i=1;i<len-3;i++)
      bb=bb+"0";
    num1=(""+num).substring(0,4)+bb;
    return num1;
    }
      

  11.   

    if(num>=100)
    {
    num1=""+num;       
     ==>
    if(num>=100)
    { num1=(""+num).substring(0,(""+num).indexOf("."));
      

  12.   

    我热num1=(""+num).substring(0,(""+num).indexOf("."));
    ==>
    num1=(""+num).split(".")[0];
      

  13.   

    最后一版,不再跟此贴!!!!!!!!!!!<html><head>
    <script language="Javascript">
    function GetValid(num,n){
      var num1,num2,num3,num4;
      num1=""+num;
      n=n/1;
      num2="000000000000000000000000000000000000000000000000";
      if(num1.indexOf(".")>-1){
         num4=num1.substring(0,num1.indexOf(".")).length;//取整数部份位数。
         num1+=num2;
         n=n<=num4?n:n+1;
      }else{
         num4=num1.length;
         num1+="."+num2;}
      num3=num1.substring(0,n);  num3+=num4>n?num2.substring(0,num4-n):"";//当不含小数的有效数字位数不够就补“0”
      return num3;
    }
    </script>
    </head><body>
    <input name="www" value=9999.999>
    <input name="eee" value=3>
    <input type=button onclick="alert(GetValid(document.all.www.value,document.all.eee.value));" value="compute">
    </body></html>