它们都有8个字节,但是为什么double的最大值多大于long的最大值?存在有限数量的位,那么如何使用浮点变量来获得更大的数字呢?
答案 0 :(得分:19)
它使用指数和尾数
使用不同的表示(浮点)有关详细信息,请参阅IEEE754
答案 1 :(得分:8)
double有一个称为指数的东西,它基本上只是一个缩放因子。这允许双倍范围更大,但代价是精确度。
long是一个简单的整数值,没有缩放因子。
答案 2 :(得分:6)
Floating point numbers由尾数和指数组成,浮点数的值为:
尾数* 2 指数
Double中的指数是11位,因此最大值为2 2 11 - 1 = 2 1024 ,这超过了64位有符号双精度的大小,即2 63 -1。
答案 3 :(得分:6)
因为浮点表示的精度较低。虽然long
类型可以表示从最小值到最大值的所有整数,但double
类型只能表示其中的一些。
由于它们占据相同数量的比特,因此每个能够表达的数字量几乎相等(实际上,double
可以表示更少的数字)。只是这些数字之间的步伐是不同的。