A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗雪梅 中级黑马   /  2012-11-22 09:03  /  1288 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 罗雪梅 于 2012-11-22 09:45 编辑

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


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

点评

哥们,long是长整型,因为double比较大转换成int可能会超出范围,所以用long  发表于 2012-11-22 09:20

3 个回复

倒序浏览
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;

这样也是可以的,只不过损失了精度,

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
今天无意间看到一个书上写的,没想明白,看看大家能给解释下不
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型的范围之内。


评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
别回复这个无聊的问题了,我自己早上起来有点晕,把long当成了float

点评

败了。。。。  发表于 2012-11-22 12:36
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马