小数默认是double类型的 ,应该这样写:float i =3.5f; 或者(float)3.5

解决方案 »

  1.   

    默认的3.5是double类型的,要转换为float必须强制类型转换啊,或者在声明的时候加上f后缀,float i=3.5f
      

  2.   

    问题是没超出3.5没超出float的范围,,应该可以自动转换的啊,就像 byte b=4;    会自动int转换成byte
      

  3.   

    问题是没超出3.5没超出float的范围,,应该可以自动转换的啊,就像 byte b=4;    会自动int转换成byte
    这跟范围的关系不大,就像我说的3.5默认是double类型的,怎么可能自动向下转型呢。如果没有小数默认为double的话,你的声明就没错了,但存在这样一个语法规则那么就必须遵守了
      

  4.   

    你这里定义时是把double类型赋值给float类型当然会提示损失精度的错误
      

  5.   

    byte b=5;  5默认为int,,但是自动向下转为byte了.
      

  6.   

    因为浮点数类型有个精度的问题,所以默认都是以高精度进行存储的,如果你确实需要使用 float 就手动强制类型转换,或者在后面以 f 或者 F 标明你想要 float
      

  7.   

    整数默认是int ,,,,,如果如你所说,,浮点有精度问题,以精度已经进行存储了不能再转了,,,,貌似可以说得通.
      

  8.   

    整数强制转换如果没有超出范围是不会丢失任何精度的,所以能转的就自动转了方便写代码。浮点数在某些情况下转换是会丢失精度的,所以除非你显式转换,编译器不会冒这个风险,不然有可能造成难以发现的bug。
      

  9.   

    Java的字面数  认为整数就是int型  所以数字超过2……31会报错  如果声明long后面加L  同理  认为带小数的为double  如果声明float后面加F