At 3.8.3, when I Export > Save As a Geopackage point layer to a shapefile, fields with type = double are output with 15(!!!) significant digits. Here are the before and after field widths:
Furthermore, the output values are modified by a slight amount. Here are some examples:
How do I maintain the source length and precision?
Based on the comment kindly provided by user30184, the QGIS shapefile output that my OP described appears - unfortunately - to be the default action.
Now I'm curious about the passage that user30184 quoted, particularly the phrase "...Real (floating point) fields without an explicit width..." This implies that my fields did not have explicit widths. My new question is, how do I make my real field widths explicit, either by modifying the source layer, or in the GDAL output process, or some other method?