var strNum='9223372036854775807';--实际要转的 
var strNum1='9223372036854775';--测试1 
var strNum2='922337203685477';--测试2 
alert(parseInt(strnumm));--9223372036854776000 
alert(parseInt(strnumm1));--9223372036854776 
alert(parseInt(strnumm2));--922337203685477 
上面的问题咋个解决 

解决方案 »

  1.   

    <script>
    var strNum = '9223372036854775807';
    var strNum1 = '9223372036854775';
    var strNum2 = '922337203685477';
    alert(strNum.toString(10, 16));
    alert(strNum1.toString(10, 16));
    alert(strNum2.toString(10, 16));
    </script>
      

  2.   

    '9223372036854775807'是字符串,没问题,如果parseInt()的话就成了int类型了,int16位处理js
      

  3.   

    toString 得到还是String啊  我要的是number
      

  4.   

    我的需求是 得到可以加减计算的int number 类型 因为要对字符串进行加减计算的
      

  5.   

    function bigNumMulti(a,b){
        var p = a.match(/\d{1,4}/g).reverse();
        var q = b.match(/\d{1,4}/g).reverse();
       var f1 = 0;
        var result = "0";
     
        for(var i = 0; i < p.length; i++){
            var f2 = 0;
            for(var j = 0; j < q.length; j++){
                var t = (p[i]|0)*(q[j]|0);
                t += new Array(f1+f2+1).join("0");
                result = bigNumAdd(result, t);
                f2 += q[j].length;
            }
            f1 += p[i].length;
        }
        return result;
    }
    function bigNumAdd(a,b){
        var m = a.split('').reverse();
        var n = b.split('').reverse();
        var ret = [];
        var s = 0;
     
        for(var i = 0; i < a.length || i < b.length; i++){
            var t = (m[i]|0) + (n[i]|0) + s;
     
            ret.push(t%10);
            s = (t/10)|0;
        }
        if(s){
            ret.push(s);
        }
        return ret.reverse().join('');
    }
     
    function bigNumPow(a,b){
        var ret = "1";
        for(var i = 0; i < b; i++){
            ret = bigNumMulti(ret,a.toString());
        }
        return ret;
    }
    document.write(bigNumPow(36,16));
    试试看
      

  6.   

    你超出最大范围了吧我数了哈好像是19位还是20 位了,int16那有你们大哦