Greetings.

I am trying to write a little program to demonstrate floating point underflow, and things aren't going as expected. First of all, my understanding of floating point underflow is as follows...

Start with the smallest possible floating point number, and divide it by 10. The exponent is already as small as possible, so the result should move the decimal point over one place.

Here is the program I wrote.

Code:
#include <stdio.h>
#include <float.h>

int main(void)
{
    double x, y;
    
    x = DBL_MIN;
    y = x / 10;
    
    printf("%e %e\n", x, y);
    
    return 0;
}
the output is 2.225074e-308 2.225074e-309

obviously the result is not what I expected. I don't understand how you can have a double number with -309 as the exponent. I thought the minimum exponent was -308