| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 10617 人关注过本帖
标题:数值类型转换—— long 转换成 float 为什么不报错?
取消只看楼主 加入收藏
蝌蚪变青蛙
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2014-4-26
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
数值类型转换—— long 转换成 float 为什么不报错?
追本溯源——JAVA中为什么float型最大值大于long型?
  最为一个常识,我们都知道浮点型在内存中占用的是4个字节的空间,而long型占用的是8个字节的空间。可是为什么4个字节的float型的最大值会大于long型的最大值呢?
  我们都知道,float类型的范围是:一3.403E38~3.403E38。而long类型的范围是:-2^63~2^63-1(大概是9*10^18)。
  我以前也是简单的记住就算完事了,对于它为什么会这样却没有考虑过。
  下面给大家分享一下我现在的理解:
  long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平分正负,数值范围是负2的63次方到正2的63次方-1。
  而float在内存中占4个字节,共32位,但是浮点数在内存中是这样的:
  V=(-1)^s * M * 2^E
   667x190
  浮点数的32位不是简单的直接表示大小,而是按照一定的标准分配的。
  其中第1位,符号位,即S。
  接下来的8位,指数域,即E。
  剩下的23位,小数域,即M,M的取值范围为[1,2)或[0,1)。
  也就是说,浮点数在内存中的二进制值不是直接转换为十进制数值的,而是按照上述公式计算而来,通过这个公式,虽然只用到了4个字节,但是浮点数却比长整型的最大值要大。
  这也就是为什么在数据转换的时候,long类型转换为float类型的根本原因所在!

-----------------------------------------------------------------------------------------------------------
上面是我在网上自己找的答案。。。回答都大同小异,太专业了。。我比较笨,好像想明白了点,又不是很明白。有没有人能用通俗一点的话解释下。。。
搜索更多相关主题的帖子: 最大值 JAVA 空间 
2014-05-10 10:41
蝌蚪变青蛙
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2014-4-26
收藏
得分:0 
回复 3 楼 日知己所无
感谢大神解答,我已经弄明白了。
至于核心技术。。我也是买的这本书,第九版。当初在网上找书的时候找了很多,最后找到这本核心技术的时候在网上实在没找到第九版的电子版,只找到个残缺的,看了看感觉还行就买了,然后就悲剧了。就像这个问题,这本书只是在43页用了半页的篇幅讲述,其中一半还是图。。。最后就只告诉我类型直接可以怎么转,至于为什么就不讲。。。还有42页的什么数学函数,一般人谁用的上这玩意,至于41页的位运算符,要不是之前学C的时候研究过补码,鬼才看的懂他写的是什么,从来不讲为什么,不讲原理。。这本书的读者定位至少该是入门级的人才能看了。今天去书城逛了圈,打算找本没人讲也能看懂的,大神有什么好推荐的吗。
2014-05-10 20:50
蝌蚪变青蛙
Rank: 1
等 级:新手上路
帖 子:12
专家分:5
注 册:2014-4-26
收藏
得分:0 
回复 6 楼 日知己所无
感谢大神这么详细的解答,不过这本书我已经打算暂时放一边了,等将来有一定基础再看。。。今天又去书城逛了逛,打算找本薄薄的但足够用的书,结果很无语。也许JAVA是比C庞大,但差别也太大了,基本就没看见薄的书。。。之前学C的时候,有人给我推荐了《c primer plus》这本,不过当我看到《the c programming language》的时候立刻就震撼了,前面那本跟砖头一样,C创始人这本才两百来页,砍掉参考手册才160多页。。可我发现JAVA就找不到这样的书,不打算找了,在书城耗了一下午,打算去网上找个视频看了。。。大神你的建议我会记着的,看完视频我再看那本核心技术,不然我怕直接看我会发疯的
2014-05-11 22:07
快速回复:数值类型转换—— long 转换成 float 为什么不报错?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023811 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved