大概是因为:
f=1.0   这个1.0是double,double->float是要损失精度的
f=1     这个1是int, int->float是可以的

解决方案 »

  1.   

    楼上的说得很对,虽然从类型所占的位数上int和float是一样的,但是由于它们的表示数的方法不同,float能表示的范围更大,所以float的精度更高,因此这是一个将低精度数赋值给高精度的过程,不会有精度损失,可以编译通过。
      

  2.   

    哦,明白了,不过没想到基本类型的转换这么麻烦.
    再去看看<程序员>11期上的蔡学庸专栏吧,听说那里好像讲到了一般来讲,是不是记住基本类型所占的位数,以及所表示的范围,就不会弄错了啊?
      

  3.   

    是的,java的基本数据类型在任何系统上的大小都是相同的。