Java和double的大小

时间:2015-02-06 19:19:38

标签: java size double

我目前正在学习Java,在我的书中写了一个双重范围,从~4,94E-324到~1,798E + 308

我有一些问题:如何将double加为零(0)? 像双d = 0; 当double没有包含零的范围时,为什么会这样?为什么负数会丢失?我忘记了什么吗?谢谢你的帮助!

此致 全型

2 个答案:

答案 0 :(得分:1)

我认为你在数学意义上解释范围。你的书的范围意味着有限数的小和有限数Double有多大可以产生负值和正值。所以基本上它与有限值有多近接近0,以及它与有限值有多接近无限。数学意义上Double的实际范围类似于-1.7*10^3081.7*10^308

Double类的成员包含它的最小值和最大值。查看Min_VALUE成员Max_VALUEDouble成员。实际上,数学范围是图书([-Double.MAX_VALUE, Double.MAX_VALUE])中范围的副产品,这是Double可以保持多少精度的结果。

答案 1 :(得分:1)

大多数编程语言中的双打和浮点数比这更复杂。您可以通过查找浮点数的IEEE 754标准找到更具技术性的解释。

基本上,浮点数(在java中,变量类型floatdouble)有效地存储在科学记数法中,带有符号,尾数和指数。 (指数的基数总是2)。如何将其转换为二进制格式有点复杂,但要知道的重要部分是数字有效地存储为+/- mantissa * 2^exponent

然而,尾数和指数都有固定的范围。您的教科书所讨论的是基于指数范围的可能值范围。也就是说,如果您选择最大或最小可能的指数,忽略值的符号,可以使用多大或多小的值。在这种情况下,零也被忽略,因为在科学记数法中,零是一个微不足道的情况,它没有说明可用的指数范围。

双打有大约15-16位数的精度,也就是说,无论指数如何,你都可以表示长度为15-16位的尾数。无论尾数如何,您都可以表示从大约10^-324到大约10^308的数字。无论尾数和指数如何,您都可以表示正值和负值。