To print the exact value in decimal, you need up to 1074 decimal places (%.1074f) or 751 in scientific notation (%.751g) for IEEE doubles.
https://www.exploringbinary.com/maximum-number-of-decimal-digits-in-binary-floating-point-numbers explains that the maximum number of decimal places required for a double precision value is 767.
UPDATE:
D:\>perl -le "$x = (2 ** -1021) + (2 ** -1074); $s = sprintf '%.767g',
+ $x; print $s; print length $s;"
4.4501...5625e-308
773
Cheers,
Rob