In my environment (Win10 64bit, VC++2019 and 32bit project),
sizeof(double) is 8 bytes, the max value should be 1.84e19. But std::numeric_limits<double>::max() is around 1.79e308.
Why they are so different?
The WIKI has more detailed informations: Double-precision floating-point format
The bits are laid out as follows:
The real value assumed by a given 64-bit double-precision datum with a given biased exponent e and a 52-bit fraction is:
So if you google 1.999*2^1023 in your browser, it will give you 1.796794e+308.

