当前位置: 技术问答>java相关
有个关于基本类型的疑点问下高手,求救啊
来源: 互联网 发布时间:2015-03-01
本文导语: float f=1.0; 因为可能损失精度,编译不通过 float f=1.0f; 从默认的double转换为float型,编译通过 以上理解没有错的话,那么为什么 float f=-1; 和 float f=0x0123; 也能编译通过呢? 能讲下理由...
float f=1.0;
因为可能损失精度,编译不通过
float f=1.0f;
从默认的double转换为float型,编译通过
以上理解没有错的话,那么为什么
float f=-1;
和
float f=0x0123;
也能编译通过呢?
能讲下理由吗?
因为可能损失精度,编译不通过
float f=1.0f;
从默认的double转换为float型,编译通过
以上理解没有错的话,那么为什么
float f=-1;
和
float f=0x0123;
也能编译通过呢?
能讲下理由吗?
|
楼上的说得很对,虽然从类型所占的位数上int和float是一样的,但是由于它们的表示数的方法不同,float能表示的范围更大,所以float的精度更高,因此这是一个将低精度数赋值给高精度的过程,不会有精度损失,可以编译通过。
|
大概是因为:
f=1.0 这个1.0是double,double->float是要损失精度的
f=1 这个1是int, int->float是可以的
f=1.0 这个1.0是double,double->float是要损失精度的
f=1 这个1是int, int->float是可以的
|
哦,明白了,不过没想到基本类型的转换这么麻烦.
再去看看11期上的蔡学庸专栏吧,听说那里好像讲到了
一般来讲,是不是记住基本类型所占的位数,以及所表示的范围,就不会弄错了啊?
再去看看11期上的蔡学庸专栏吧,听说那里好像讲到了
一般来讲,是不是记住基本类型所占的位数,以及所表示的范围,就不会弄错了啊?
|
是的,java的基本数据类型在任何系统上的大小都是相同的。