例如 通过javascript获取个整数18位的 跟 3相加 
我用的是parseInt(整数18位)+parseInt(3)结果怎么不正确啊 用parseFloat()貌似也不行  有谁知道啊

解决方案 »

  1.   

    18位啊,那得用long 
    但long好像也只能算到19位.
    再不行,那得用BigInteger了,不过不知道js有没有这个
      

  2.   

    比如说 130100098857899944 18位 但在parseInt()或者parseFloat()的值就变为130100098857899930这个是为什么  一般在解决大整数相加该怎么办 有没什么可行的办法(javascript的) 谢谢了!
      

  3.   

    var s1 = 100000000000000000000;
    var s2 = 200000000000000000000;
    alert(eval(s1)+eval(s2));//300000000000000000000
      

  4.   

    nzz1985不行的啊
    var dd = 130100098857899944;
    var d =  100000000000000000000;
    alert(eval(d));//输出100000000000000000000
    alert(eval(dd));//输出130100098857899930
    这是为啥呢
      

  5.   

    不行,貌似找不到办法了,我试了Number也不行
    把字符串拆开一个个的自己算倒是一种办法
      

  6.   


    var a = 1301000988578999415;
    var b= 1000000 ;
    var c= a + b;
    var d = a ; 
    if(c == d)
    {
    alert("OK");
    }
    else
    {
    c = c + " "; //这个是关键
    alert("Nok c:" + c +" ---  d:" + d + " --- c-d :"+ (c - d));
    }
    /**
    这个可以正常的显示大数据, 而且运算结果是正确的, 你看看能不能满足你的要求*/
      

  7.   

    楼上的不行的我用java写了个最简单的,我觉得用这种思路可以解决,不过中间还要添加很多逻辑的 public static void add(){
    String str1 = "130100098857899944";
    String str2 = "3";
    String str11 = null;
    String str22 = null;
    if(str1.length()<str2.length()){
    str11 = str2.substring(0,str2.length()-str1.length());
    str22 = str2.substring(str2.length()-str1.length(),str2.length());
    }else{
    str11 = str1.substring(0,str1.length()-str2.length());//13010009885789994
    str22 = str1.substring(str1.length()-str2.length(),str1.length());//4
    }
    int num = Integer.parseInt(str22) + Integer.parseInt(str2);
    System.out.println(str11+num);
    }要判断截取出来的用于相加的字符串能不能转换为int或者long,还要考虑相加的结果是不是超过int或long的范围,如果需要,就再截取
    如果你觉得可以的话,就用js写个类似的就可以了,要是你的数据不是超级大的话,那代码就可以写死一点了