//Jisuan.javapublic class Jisuan{
  public static void main(String[] args){
    float a=8.56%3;
    System.out.println(a);
  }
}
为什么错啊?

解决方案 »

  1.   

    非要用float就在前面加(float),强行转换
      

  2.   

    是不是,系统默认每一个数都是int型啊?
    是不是这个原因啊??
      

  3.   

    8.56 是double , 所以8.56%3也是个double
      

  4.   

    double是64bit的,float是32bit的.
    float可以安全得转到double 
        double a = 0.0f
    但double要转为float就不安全了
        float a = 0.0 (编译不通过)
    因此只能进行强行转换
        float a = (float)0.0
    或者直接使用float
        float a = 0.0f
      

  5.   

    8.56为什么是double 啊??为什么不是float??
      

  6.   

    这个是java的语言规范,后面不带f的,一律看成是double
      

  7.   

    我把它改了一下,变成double a=8/3,
    为什么输出结果是2.0啊?为什么不是一个double 值啊???
      

  8.   

    8是int,所以8/3也是int,也就是2
    然后你把这个2转成了double,它就给你加了个难看的".0"
      

  9.   

    如果你要得出2.6666666
    double a = 8.0/3
      

  10.   

    那你说的“java的语言规范,后面不带f的,一律看成是double”是指的小数了??