比如 写个方法 计算  1+2+3+4。。10亿并返回结果。  怎么个做法呀。

解决方案 »

  1.   

    估计使用long就可以,要么你就换成double.
      

  2.   

    同意楼上   &   接分
      

  3.   

    使用BigDecimal decimal = new BigDecimal()可以
      

  4.   

    java的int型是-21亿到+21亿之间。long型是这个数的平方。用long型足以描述这世界上当今技术需要描述数量所能达到极限。
      

  5.   

    int 用4字节存储 ,应该够了,不够用long
      

  6.   

    int肯定是不够用,但是在这里long就已经够用了,但是如果再往上就可以用BigIntegerlong型远远未能满足一些复杂计算上的极限!
      

  7.   

    更大的话就用BigInteger。自己去查一下文档。
      

  8.   

    我做RSA时用BigInteger,可以处理200位的整数,够用了吧
      

  9.   

    int可以描述-21亿到+21亿,描述10亿为什么不够?
      

  10.   

    1 + 2 + 3 + ... + 10亿
    粗略计算: (10亿 * 5 亿)
    也就是 10位数 * 5位数,结果为约50位,而long只能表示不到20位
    故long是不行的!
    上面很多人说long就可以,纠正一下.呵呵,许BigInteger
      

  11.   

    楼上的算法很可怕,10位数*5位数=50位数?把我都整晕了,做个试验才发现不对1000*1000=1000000.
    才7位,不是16位!
    int[] num = new int[1000];1000位够大吗?int[] num1 = new int[1000];
    int[] num2 = new int[1000];
    int[] num3 = new int[1001];
    //给num1和num2赋值
    int m = 0;
    for (m = 0; m < 1000; m++) {
           if (num1[m] + num2[m]+num3[m] >= 10) {
    num3[m+1] += 1;
    num3[m] += num1[m] + num2[m] - 10;
    } else{
    num3[m]+=num1[m]+num2[m];
           }
    }
    这个就能算出来lz那个1+2+...+10亿了!首先数学公式:sum=(10亿+1)*5亿=50亿亿+5亿 
    50亿亿就是50后有18个0,不是50位;用num1表示就是,num1[19]=1,5亿就是num2[9]=1.
    计算得:00000000010000000001倒过来念!不知道1000位怎么读,大家研究一下,给它起个名字吧!
      

  12.   

    楼下的说的对
    10亿 * 5亿 约19位,不是50位,糊涂了 ,呵呵
    就这个问题可用long
    谢谢指正
      

  13.   

    norwolfli(烟灰)  不可用数组啊。