实在搞不懂float和double的精度,什么时候使用float什么时候使用double,
在《thinking in java》中看见一个程序
    public static void main(String[] arg)
     double r=0;
     while(r<0.99d){........}
    难道0.99是float类型的!
求高手指点秘境,小喽啰谢啦!

解决方案 »

  1.   

    flote 和double 都指的浮点型,只是精度的问题,,,定义的时候你需要高精度的就用double,,一般的就定义为flote,,具体精度可以参考JAVA基础
      

  2.   

    你好,楼主。双精度类型double比单精度类型float具有更高的精度和更大的表示范围,但是float类型具有速度快、占用内存小的优点。用F或者f表示float类型的常量,用D或者d表示double类型的常量。其实在编程中,如果对精度要求不是很高,用float或者double表示都行;float类型能精确到小数点后7为,而double类型能精确到到小数点后16位。所以什么时候使用float什么时候使用double,就看你要的计算结构的精度要求了。
      

  3.   

    附测试代码:
    public class Test {
    public static void main(String[] args) {
    double num = Math.PI;
    float num2 = (float) Math.PI;
    System.out.println(num / 2);
    System.out.println(num2 / 2);
    }
    }
    运行结果:
    1.5707963267948966
    1.5707964
      

  4.   

    补充一点:
    浮点型的常量的默认类型是double的。如“0.99”没有指定“f”或“d”,则默认是double类型的。希望对你有帮助。
      

  5.   

    其实float和double并没有很严格的要求,在很多情况下是可以通用的!