Why double.MaxValue is larger than long.MaxValue?

谁都会走 提交于 2019-12-12 07:45:19

问题


both of them hold 8 bytes, but how come the max value for double is much greater than the max value of long? there is a finite number of bits available, so how could you reach greater numbers with floating point variables?


回答1:


It uses a different representation (floating point) using exponents and mantissa

For details see IEEE754




回答2:


A double has something called an exponent, which is basically just a scaling factor. This allows the range of double to be much greater, but at the cost of precision.

A long is a simple integer value with no scaling factor.




回答3:


Because floating-point representation is of lower precision. While long type can represent all integer numbers in the range from its minimum to maximum, double type can only represent some of it.

Since they occupy same amount of bits, the amount of numbers each is capable to express are nearly equal (actually, double can represent fewer numbers). Just the paces between these numbers are different.




回答4:


Floating point numbers consist of a mantissa and an exponent, and the value of a floating point number is:

mantissa * 2exponent

The exponent in a Double is 11 bits, so the maximum value is of the magnitude 2211 - 1 = 21024, which is way more than the magnitude of a 64-bit signed double, which is 263-1.



来源:https://stackoverflow.com/questions/2639941/why-double-maxvalue-is-larger-than-long-maxvalue

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!