I know that there are tons of questions like this one, but I couldn't find my answers. Please read before voting to close (:
- According to PC ASM:
The numeric coprocessor has eight floating point registers. Each register holds 80 bits of data. Floating point numbers are always stored as 80-bit extended precision numbers in these registers.
How is that possible, when sizeof
shows different things. For example, on x64 architecture, the sizeof double
is 8 and this is far away from 80bits.
why does
std::numeric_limits< long double >::max()
gives me1.18973e+4932
?! This is huuuuuuuuuuge number. If this is not the way to get max of floating point numbers, then why this compiles at all, and even more - why does this returns a value.what does this mean:
Double precision magnitudes can range from approximately 10^−308 to 10^308
These are huge numbers, you cannot store them into 8B or even 16B (which is extended precision and it is only 128bits)?
Obviously, I'm missing something. Actually, obviously, a lot of things.