java中的long是64位,float是32位.
为什么我将一个long赋值给float却不报错?
eg:
float f = 0;
long l = 154684;
f = l;我的理解是float应该位数不够而报错啊!
迷惑中~
为什么我将一个long赋值给float却不报错?
eg:
float f = 0;
long l = 154684;
f = l;我的理解是float应该位数不够而报错啊!
迷惑中~
float的字节宽度没有long大,但它的表现值宽度要宽得多,因此long到float是没有问题的。下面的例子能说明问题,x已经是long的最大值了,赋值给y后结果如何自己看吧long x=0x7fffffffffffffffL;
float y=x;
System.out.println(x);
System.out.println(y);
可以认为float比long范围更大
随便进进我的网站支持一下http://www.91shang.com
也就是说float的值范围大,但是很多long的数它是表示不了的,只能近似,既使是long转double也
仍然有很多数不能表示,只能近似,如果是银行系统之类的精确运算,应该用BigDecimal类(题外话);
float类型的数据进行赋值.
可惜分数不多,只好给最先解出的wangqiyy拉!
看样子还是我自己看书有思维定式,改进中
再次感谢!
内推网 - 内部推荐 求职快线
http://www.neitui.com
long虽然比float长,但是结构不一样,所以float表示的范围会大一些所以楼主