就是,主要是第2个,问下
//*******1******
float f1 = 1.0f;
double d1 = 1.0;
//*******2******
System.out.println(f1==d1); //输出true
float f2 = 1.1f;
double d2 = 1.1;
System.out.println(f2==d2); //为什么这里输出false??//*******3******
float f1 = 1.1f;
double d1 = 1.1f;          //和第2个,这里多了个f
System.out.println(f1==d1);//又输出 true了为什么呢?

解决方案 »

  1.   

    无论什么语言,作为浮点数的float和double都不是精确保存的值,所以,不要用=号来比较两个浮点数,这个比较是没什么意义的。
      

  2.   

    应该全都是TRUE,你把你的全部的代码写上.看是不是有侍值两次的情况.
      

  3.   

    1.1f是申明为float的1.1,4字节保存
    1.1是默认的double的1.1,8字节保存double d1 = 1.1f是把float的1.1转换成double的1.1(注意这个转换后的double的1.1和直接写的也是double型的1.1值可能不同)
    f1 == d1的时候是把f1转换成double再和d1比较的,这时候两边都是从float的1.1转换过来的double的1.1,所以值相同。
      

  4.   

    4楼大哥说了很好,谢谢了
    但是,我现在被你说的,就是感觉==很深奥阿
    照你最后一句的话,
    如果我改成d1==f1,就说明把d1转换成float在和f1比较?