黑马程序员技术交流社区

标题: 类型转换的问题 [打印本页]

作者: 罗雪梅    时间: 2012-11-22 09:03
标题: 类型转换的问题
本帖最后由 罗雪梅 于 2012-11-22 09:45 编辑

今天无意间看到一个书上写的,没想明白,看看大家能给解释下不
double  dd=12.255
//想取得dd的整数部分,那么直接将dd强转为long类型
long lg=(long)dd;


怎么是强成long呢,long也是浮点数啊,是不是应该转成int型 呢,但我又觉得书不太可能出这样的错误吧,自己也不理解,请教!

作者: 王斌    时间: 2012-11-22 11:06
long 就是长整型的意思。java 的 8 个基本类型的一种。你应该要把 java 的 8 种基本类型一起记:byte short int long char float double boolean
int 是 32 位的整数,long 就是 64 位的整数,表示范围:-2^63 ~ 2^63 -1

double   d = 12.33;
int i = (int)d;

这样也是可以的,只不过损失了精度,
作者: 唐永康    时间: 2012-11-22 11:59
今天无意间看到一个书上写的,没想明白,看看大家能给解释下不
double  dd=12.255
//想取得dd的整数部分,那么直接将dd强转为long类型
long lg=(long)dd;


怎么是强成long呢,long也是浮点数啊,是不是应该转成int型 呢,但我又觉得书不太可能出这样的错误吧,自己也不理解,请教!


首先,整形包括 byte short int long 按原理上说四种都可以转换,long不是浮点型,浮点型是float和double
可是short和byte都是表示范围较小的数,容易损失精度,
而int和long表示的数值范围要大些,特别是long最大,
它们表示范围由小到大的排序是 byte,short,int,long

至于你觉得应该转换成int型,那是因为int型是最常用的数据型,所以,通常在我们定义一个数据类型的时候,
最先想到的就是int型,而现实生活中的大部分数值范围也在int型的范围之内。



作者: 罗雪梅    时间: 2012-11-22 12:33
别回复这个无聊的问题了,我自己早上起来有点晕,把long当成了float




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2