<script language="javascript">
    var varStr = Math.floor(1111111111111111511.11111111);
    alert(varStr);
    </script>
只要前面整数超过16位就得不到正确结果,请问为什么,如何解决?

解决方案 »

  1.   

    那是当然,整数溢出了。32位系统中整数是32位的,也就是说最大(无符号)也就是0xffffffff,大约是10位10进制数。
    解决方法是用两个变量分别表示高字和低字。不过你用那么大的数字干嘛?
      

  2.   

    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);
    这个函数求出的直益出了。好办法?