计算长整型值很容易:
它只是 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/