java - 计算 Java Double 的最大值 (5)?

标签 java floating-point

计算长整型值很容易:

它只是 2 的 n-1 次方,然后是负 1。n 是类型中的位数。对于 long 来说,这被定义为 64 位。因为我们也必须使用表示负数,所以我们使用 n-1 而不是 n。因为必须考虑0,所以我们减去1。所以最大值是:

MAX = 2^(n-1)-1

对于 double 来说,它的等效思维过程是什么:

Double.MAX_VALUE

来了

1.7976931348623157E308

最佳答案

double 的最大有限值为 hexadecimal format , 0x1.fffffffffffffp1023,表示略低于 2 的数字(1.ff…,十六进制表示法)与 21023 的乘积。当这样写时,很容易看出它是由最大可能的 significand 组成的。和最大可能的指数,其方式与您在问题中构建最大可能的 long 的方式非常相似。

<小时/>

如果您想要一个所有数字都以小数表示的公式,这里有一个:

Double.MAX_VALUE = (2 - 1/252) * 21023

或者,如果您更喜欢一个能够清楚地表明 Double.MAX_VALUE 是整数的公式:

Double.MAX_VALUE = 21024 - 2971

关于java - 计算 Java Double 的最大值 (5)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18786102/

相关文章:

java.lang.VerifyError 函数调用的不兼容对象参数

c++ - 两个单精度浮点 vector 的点积在 CUDA 内核中产生与在主机上不同的结果

c - C中的 float 学获取随机数

C# float 神奇地改变值(value)

c - Windows/Linux 上整数数字的巨大 printf float/double 差异

java - Spring MVC 中不存在必需的字符串参数错误

java - 是否可以在一个节点上运行多个 Selenium 测试?

java - 寻路 - StackOverflowError

java - Docker 是否在 VM 之上提供任何内存效率?

c++ - 奇怪的,float类型的参数在windows中传入函数