java中的long是64位,float是32位.
为什么我将一个long赋值给float却不报错?
答案:
long和float从根本上讲它们表示的不是一类数,前者是精确值,而后者是非精确值。
float的字节宽度没有long大,但它的表现值宽度要宽得多,因此long到float是没有问题的。
下面的例子能说明问题,x已经是long的最大值了,赋值给y后结果如何自己看吧
long x=0x7fffffffffffffffL;
float y=x;
System.out.println(x);
System.out.println(y);