The program
int main ()
{
    long long ll = LLONG_MAX;
    float f = ll;
    std::cout << ll << '\n';
    std::cout << std::fixed << f << '\n';
    return 0;
}
gives:
9223372036854775807
9223372036854775808.000000
How is it possible? If 23-bit mantissa can have only 8,388,607 maximum value, why does cout output a 64-bit number?
 
    