首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解释java中的双精度范围?

如何解释java中的双精度范围?
EN

Stack Overflow用户
提问于 2020-10-25 09:17:34
回答 1查看 98关注 0票数 1

我正在学习(用java)编程的入门课程,我有兴趣了解为什么java中的原始数据类型的范围是这样的。当涉及到像字节这样的类似整数的数据类型时,似乎很容易理解为什么它只接受-128到127之间的值;一个字节的大小为8位,可以接受最多256个值,所以我们可以为这256个值中的每个值分配一个自然数,我相信这就是幕后发生的事情。这也解释了为什么128被排除在外:我们有128个负数,127个正数和零。这些加起来已经是256个了。在1,256和-128,128之间没有双向映射。

这个想法对于所有类似整数的数据类型的范围都是有意义的,但是当涉及到浮点时,人们会看到一些奇怪的范围。例如,double的范围是-2^{1074},(2-2^{-52})2^{1023}。为什么会这样呢?

我为这个麻烦的符号道歉,显然我不能在这里使用latex。

EN

回答 1

Stack Overflow用户

发布于 2020-10-25 10:31:28

浮点值和整数值是一样的--可用的位数。

IEEE双倍长度浮点值有64位,用法如下:

符号位:1位

指数: 11位

符号和精度: 52位

有效数是一个二进制小数,因此最大值(所有位设置)略小于1。

指数的值为0到2047,或-1024到+1023。这给出了从2到-1024到2到+1023的大致范围(实际上更小,因为有几个值是为特定用途保留的)。

Wikiipedia for more exact details

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64519478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档