有个关于基本类型的疑点问下高手,求救啊
float f=1.0;
因为可能损失精度,编译不通过
float f=1.0f;
从默认的double转换为float型,编译通过
以上理解没有错的话,那么为什么
float f=-1;
和
float f=0x0123;
也能编译通过呢?
能讲下理由吗?
问题点数:10、回复次数:4Top
1 楼hahaha88(忧郁的眼神,稀嘘的胡子喳)回复于 2001-12-08 01:50:04 得分 2
大概是因为:
f=1.0 这个1.0是double,double->float是要损失精度的
f=1 这个1是int, int->float是可以的Top
2 楼cherami(cherami)回复于 2001-12-08 10:47:12 得分 4
楼上的说得很对,虽然从类型所占的位数上int和float是一样的,但是由于它们的表示数的方法不同,float能表示的范围更大,所以float的精度更高,因此这是一个将低精度数赋值给高精度的过程,不会有精度损失,可以编译通过。Top
3 楼Patrick_DK(我有我的调调,就是这么屌)回复于 2001-12-08 14:18:13 得分 2
哦,明白了,不过没想到基本类型的转换这么麻烦.
再去看看<程序员>11期上的蔡学庸专栏吧,听说那里好像讲到了
一般来讲,是不是记住基本类型所占的位数,以及所表示的范围,就不会弄错了啊?Top
4 楼cherami(cherami)回复于 2001-12-09 23:29:53 得分 2
是的,java的基本数据类型在任何系统上的大小都是相同的。Top




