js的math.floor是有位数限制的,超过一定位数会溢出,就会变成这样,我以前遇到过,好像过了17位就不行了

解决方案 »

  1.   

    function formatCurrency(num) {     num = num.toString().replace(/\$ ¦\,/g,''); 
          if(isNaN(num)) 
          num = "0"; 
          sign = (num == (num = Math.abs(num))); 
            if(declen==null ¦ ¦isNaN(declen) ¦ ¦declen <0) declen=2;  
          num = Math.floor(num*100+0.50000000001); 
          cents = num%100; 
          num = Math.floor(num/100).toString(); 
          if(cents <10) 
          cents = "0" + cents; 
          for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) 
          num = num.substring(0,num.length-(4*i+3))+','+ 
          num.substring(num.length-(4*i+3)); 
          return (((sign)?'':'-') + num + '.' + cents); 

    ---------------------------- num 过大大于16位以上, num = Math.floor(num*100+0.50000000001); 
    这个函数求出的值益出了。 有啥好办法吗?
      

  2.   

    如果使用js操作大量的数字运算,可能会遇到js精度问题,可参考
    http://blog.csdn.net/xuStanly/archive/2008/04/27/2334084.aspx
      

  3.   

    Math.floor又不要求四舍五入什么的,
    自己写个方法<script>
    var number="1111111111111111511.11111111";
    alert(number.replace(/\.[\x20-\x7f]*/,""));
       </script>