为什么double.MaxValue大于long.MaxValue?

21 double

它们都有8个字节,但是为什么double 的最大值远远大于long的最大值?存在有限数量的位,那么如何使用浮点变量来获得更大的数字?

sta*_*ker 19

它使用指数和尾数使用不同的表示(浮点)

有关详细信息,请参阅IEEE754


Mar*_*ers 8

double有一个叫做exponent的东西,它基本上只是一个缩放因子.这允许双倍范围更大,但是以精确度为代价.

long是一个简单的整数值,没有缩放因子.


Mat*_*nen 6

浮点数由尾数和指数组成,浮点数的值为:

尾数*2 指数

Double中的指数是11位,因此最大值的大小为2 2 11 - 1 = 2 1024,这大于64位有符号双精度的大小,即2 63 -1.


P S*_*ved 6

因为浮点表示的精度较低.虽然longtype可以表示从最小值到最大值范围内的所有整数,但doubletype只能表示其中的一些.

由于它们占据相同数量的比特,因此每个能够表达的数字量几乎相等(实际上,double可以表示更少的数字).只是这些数字之间的步伐是不同的.