It turns out that printing a floating point value “correctly” is pretty complex, requiring a lot of “extended precision” variables. The arduino and/or avr-libc code does not attempt that complexity, and you wouldn’t want to use that much memory on an avr, anyway.
Relevant papers: https://lists.nongnu.org/archive/html/gcl-devel/2012-10/pdfkieTlklRzN.pdf
https://www.cs.tufts.edu/~nr/cs257/archive/florian-loitsch/printf.pdf
You should be ok as long as you don’t try to print more than the 7 digits of precision that exist in the number format.