while(i!=0&&i==-i){}如何申明i可以使这个while成为死循环还有个小问题System.out.println(2.00-1.10)
为什么打印出的是0.8999999999999999

解决方案 »

  1.   

    (1)
    while(true){
       System.out.println("死定了");
    }(2)
    浮点数在计算机中的表示是有一定精度的。
      

  2.   

    while (i==i){}  //死循环
      

  3.   

    while(true){}for(;;){}
    都是死循环
      

  4.   

    你们没看清我的问题,我不是要个死循环,我是要while(i!=0&&i==-i){}条件不变,通过申明"i"
    来使这个循环变成死循环
      

  5.   

    while (i==i || (i-i)==0 || (i/i)==1 || (i%i)==0 ){
    }
      

  6.   

    错了,不是i = 0xFFFFFFFF
      

  7.   

    只要把while里的结果弄为true就可以造成楼主要的结果了。浮点型是有误差的。
      

  8.   

    lz要一个数 i    i的负数与i相等 但是这个i不是0 !  我只知道有  i != i 本身
      

  9.   

    2个问题在Java.Puzzlers.Traps.Pitfalls.and.Corner.Cases这本书中有提到过while(i!=0&&i==-i){} 
    i = Integer.MIN_VALUE 或 i = Long.MIN_VALUE;第二个是浮点数精度问题
      

  10.   

    2.00-1.1,结果为0.9
    可以用BigDecimal,但注意用BigDecimal(String) 带string的构造函数System.out.println(new BigDecimal("2.00").subtract(new BigDecimal("1.10")));
      

  11.   

    这样的i不知道是什么,看有没有老大知道。2.00-1.10,很多方法。
    你可以先把这两个数乘100,然后取整,相减,再除以100,然后取保留2位小数。
    或者用BigDecimal类
    new BigDecimal(String.valueOf(2.00)).subtract(new BigDecimal(String.valueOf(1.10)))
      

  12.   

    多谢huhuGang,我又长知识了。
    Integer.MIN_VALUE = 0x80000000
      

  13.   

    在5.0中,由于auto-unboxing的影响,也会存在i,j使得
    i <= j && j <= i && i != j
      

  14.   

    double i1 = 2.00;
    double i2 = 1.999999999999999;
    double i = i1 - i2;
    System.out.println(i1-i2);
    System.out.println((int)(i1-i2));
    while(i!=0 && (int)i == -(int)i){
    System.out.println("Success");

    }
    死循环试一下
      

  15.   

    for(;;;)
    我觉得这个语句比较好
    新手上路,请多多指教
      

  16.   

    Integer.MIN_VALUE 
    只有这个值满足条件,因为它是不对称的,已出了
      

  17.   

    int的范围 -2^31 ~~ 2^31-1
      

  18.   

    我也想知道System.out.println(2.00-1.10)
      

  19.   

    (1)
    如果i是整型,那么i=0x80000000,就死了
    (2)
    浮点数就是这样不精确的,常常缺斤少两……
      

  20.   

    1)在不改变while的表达式时令 i = -1 就可以了啊。2)因为运算后的结果是double型的,是有一定的精度的。
      

  21.   

    在二进制里,0.1是不能精确表示的,正如在十进制里的1/3一样,所以才有1.0-0.9=0.09999999999999998,
    ==================================================================================
    我们用java来解决实际问题。java技术交流,讨论java的技术细节和最新技术。欢迎中高级程序员以及渴望学习java技术的初学者加入讨论。QQ群:3001581