使用value = parseInt(a,10)+ parseInt(b,10);
得到value为1e+38,即10的38次方,请问:这个怎么可以转化为普通的格式呢?如:100.....000

解决方案 »

  1.   

    <script language="javascript" > 
      alert(parseInt("你的数字",10).toFixed(0))
    </script> 
      

  2.   

    恩,上面2位说的都不错,可是我还有个疑问
    parseInt这个方法对数字位数有没有限制???我这边数字大到一定程度的话,比如说100000000000000009,使用parseInt得到的并不是这个值,而是100000000000000008,很奇怪啊,难道位数长的数字就不能使用parseInt吗?那么使用哪个方法呢?
    ps:呵呵,上面2位结帖的时候我会给分的,再次感谢你们!
      

  3.   

    在我这里是好使的,这个方法对客户端的JS版本要求有点偏高,至少在IE5.0里这个方法用不起来,可能你的浏览器是的js版本比较低,我找了一个解决这个BUG的修正代码
    toFixed()方法修正if(typeof(Number.prototype.toFixed)!="function")
    {
          Number.prototype.toFixed = function(d)
          {
              var s=this+"";if(!d)d=0;
              if(s.indexOf(".")==-1)s+=".";s+=new Array(d+1).join("0");
              if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0,"+ (d+1) +"})?)\\d*$").test(s))
              {
                  var s="0"+ RegExp.$2, pm=RegExp.$1, a=RegExp.$3.length, b=true;
                  if (a==d+2){a=s.match(/\d/g); if (parseInt(a[a.length-1])>4)
                  {
                      for(var i=a.length-2; i>=0; i--) {a[i] = parseInt(a[i])+1;
                      if(a[i]==10){a[i]=0; b=i!=1;} else break;}
                  }
                  s=a.join("").replace(new RegExp("(\\d+)(\\d{"+d+"})\\d$"),"$1.$2");
              }if(b)s=s.substr(1);return (pm+s).replace(/\.$/, "");} return this+"";
          };
    }
    若是想完全使用这个自定义的方法替代那个有BUG的系统方法的话,只需要去掉最外层的那个 if 判断就可以了。
      

  4.   

    在我这里是好使的,这个方法对客户端的JS版本要求有点偏高,至少在IE5.0里这个方法用不起来,可能你的浏览器是的js版本比较低,我找了一个解决这个BUG的修正代码
    toFixed()方法修正if(typeof(Number.prototype.toFixed)!="function")
    {
          Number.prototype.toFixed = function(d)
          {
              var s=this+"";if(!d)d=0;
              if(s.indexOf(".")==-1)s+=".";s+=new Array(d+1).join("0");
              if (new RegExp("^(-|\\+)?(\\d+(\\.\\d{0,"+ (d+1) +"})?)\\d*$").test(s))
              {
                  var s="0"+ RegExp.$2, pm=RegExp.$1, a=RegExp.$3.length, b=true;
                  if (a==d+2){a=s.match(/\d/g); if (parseInt(a[a.length-1])>4)
                  {
                      for(var i=a.length-2; i>=0; i--) {a[i] = parseInt(a[i])+1;
                      if(a[i]==10){a[i]=0; b=i!=1;} else break;}
                  }
                  s=a.join("").replace(new RegExp("(\\d+)(\\d{"+d+"})\\d$"),"$1.$2");
              }if(b)s=s.substr(1);return (pm+s).replace(/\.$/, "");} return this+"";
          };
    }
    若是想完全使用这个自定义的方法替代那个有BUG的系统方法的话,只需要去掉最外层的那个 if 判断就可以了。
      

  5.   

    整数太大会失真的问题,请参考:
    http://topic.csdn.net/u/20071002/15/b35ca9a8-5e8d-4b58-bdb9-f31cc3f52c61.html
      

  6.   

    那么就是说当一个值大于Number.MAX_VALUE时,就不能使用parseInt了??
    那么我们在javascript里面如何处理呢??
    在java里面,当我们不能使用int,long的时候,可以使用biginteger,在javascript里面无法处理了???
      

  7.   

    那么就是说当一个值大于Number.MAX_VALUE时,就不能使用parseInt了?? 
    ---------------
    大于9007199254740992的就可能失真
    大于Number.MAX_VALUE的是当无穷大