谢谢

解决方案 »

  1.   

    错了
    是 1<<126
    sorry
      

  2.   

    <<运算符就是位移~~
    1<<126等同于1 * (2的126次方)2<<126等同于2 * (2的126次方)
      

  3.   

    溢出了。
    即使是 double 型也只能,存放 2 的64(8*8)次方。
    如果要确定到求某一位的话,可以用多个byte数组来存放。用压缩型 bcd 码来存放。
    运算法则和平常手工算式乘法相似,但有所不同,需要做调整。
    如果是用汇编来实现的话。8086系列cpu有相应的bcd码调整指令。
    java vm 好象没有。
    如果采用那种方式的话。
    整个过程至少需要 9*126次 (乘法&调整) ,
      

  4.   

    to  sjjf(水晶剑锋)
    double虽然是64位,但它的范围不是2 的64,而是
    double 64 1.7e-308~1.7e+308 
    浮点数存储与整数不同
      

  5.   

    java中的double是遵循IEEE754标准的!
      

  6.   

    double i ;
    用i=1<<126;  的值 1.073741824E9
    用Math.pow(2,126) 的值8.507059173023462E37
    為什么啊?
      

  7.   

    double i;i=1<<126;这是谁想出来的办法啊?搞笑,我觉得对double进行<<操作是没有任何意义的.
    85070591730234615865843651857942052864BigInteger base=new BigInteger(new byte[]{2});
    BigInteger result=base.pow(126);
      

  8.   

    double就已经足够算啦,Math.pow(2,126);
      

  9.   

    哦,好象double足以表示2的128次方的精度了,double有52位用来表示基数,不过还是不推荐double.
      

  10.   

    呵呵,double还是没有足够的精度,52位不过可以表示E17左右而已,糊涂了.
      

  11.   

    double的最大表示是
    (2-2^-52)·2^1023
    最小 是2-1074
    所以2^126次方还远远没有超过它能够表示的精度
      

  12.   

    不过当表示的数很大时,有效位数好像是会变小了(这个只是我的认为,没有确认)
    如果你想精确的,那就直接使用BigInteger啦,这个绝对精确BigInteger result = BigInteger.ONE;
    BigInteger tow = BigInteger.valueOf(2);
    for(int i = 1; i <= 128; i++) {
      result = result.multiply(two);
    }
      

  13.   

    你试试这个
            BigDecimal b = new BigDecimal(2);
            for (int i = 0; i < 126; i++) {
                b=b.multiply(new BigDecimal(2));
            }
            System.out.println(b);        
        }
      

  14.   

    你试试这个
            BigDecimal b = new BigDecimal(2);
            for (int i = 0; i < 126; i++) {
                b=b.multiply(new BigDecimal(2));
            }
            System.out.println(b);        
        }
      

  15.   

    最大和最小之间当然不是等同于精度,但是问题是你到底需要多少位有效数字,如果你只需要4位那么我认为double是足够了,你如果认为不够那么你就使用BigInteger,这样返回的结果是不存在任何偏差的,但是代价是计算速度的大大降低。
      

  16.   

    BigInteger.shiftLeft(int n) 
      

  17.   

    这次同意 ChDw(米),BigInteger运算速度肯定是慢,呵呵.用它的求个幂,再取模,简直慢的要死.