0.3f==0.3和0.5f==0.5的返回值分别是什么?麻烦写一下具体的运算步骤。万分感谢

解决方案 »

  1.   

    System.out.println(0.3f == 0.3); false
    System.out.println(0.5f == 0.5); true
      

  2.   

    并不是类型不同的问题而是有些小数无法用float或double精确表示的问题比如0.x是一个无法用二进制精确表示的数那么,float a = 0.x实际保存的可能是0.x.......10983,也就是说后面还有数字
    double的话同是如此,但double的位数更多所以,这样用==来比较肯定不相等一般程序中,是很少用float,double直接==比较的,如果不可避免这两种类型的比较,一般采用减法来做,如
    if(a-b<0.000001) {
    //就表示两者相等,精度自己控制
    }
      

  3.   

    float和double类型的数值操作一般转换成BigDecimal来做。因为精度缘故