diff --git a/alg/gdal_rpc.cpp b/alg/gdal_rpc.cpp index 31e9c24c6aa0..83827d7fc735 100644 --- a/alg/gdal_rpc.cpp +++ b/alg/gdal_rpc.cpp @@ -516,9 +516,9 @@ static void *GDALCreateSimilarRPCTransformer(void *hTransformArg, char **papszOptions = nullptr; papszOptions = CSLSetNameValue(papszOptions, "RPC_HEIGHT", - CPLSPrintf("%.18g", psInfo->dfHeightOffset)); + CPLSPrintf("%.17g", psInfo->dfHeightOffset)); papszOptions = CSLSetNameValue(papszOptions, "RPC_HEIGHT_SCALE", - CPLSPrintf("%.18g", psInfo->dfHeightScale)); + CPLSPrintf("%.17g", psInfo->dfHeightScale)); if (psInfo->pszDEMPath != nullptr) { papszOptions = @@ -529,7 +529,7 @@ static void *GDALCreateSimilarRPCTransformer(void *hTransformArg, if (psInfo->bHasDEMMissingValue) papszOptions = CSLSetNameValue(papszOptions, "RPC_DEM_MISSING_VALUE", - CPLSPrintf("%.18g", psInfo->dfDEMMissingValue)); + CPLSPrintf("%.17g", psInfo->dfDEMMissingValue)); papszOptions = CSLSetNameValue(papszOptions, "RPC_DEM_APPLY_VDATUM_SHIFT", (psInfo->bApplyDEMVDatumShift) ? "TRUE" : "FALSE"); @@ -2032,7 +2032,7 @@ CPLXMLNode *GDALSerializeRPCTransformer(void *pTransformArg) { CPLCreateXMLElementAndValue( psTree, "DEMMissingValue", - CPLSPrintf("%.18g", psInfo->dfDEMMissingValue)); + CPLSPrintf("%.17g", psInfo->dfDEMMissingValue)); } CPLCreateXMLElementAndValue(psTree, "DEMApplyVDatumShift", diff --git a/alg/gdalgeoloc.cpp b/alg/gdalgeoloc.cpp index d17d2788098b..d053169304de 100644 --- a/alg/gdalgeoloc.cpp +++ b/alg/gdalgeoloc.cpp @@ -1591,9 +1591,9 @@ static void GDALGeoLocRescale(char **&papszMD, const char *pszItem, { const double dfVal = dfRatio * CPLAtofM(CSLFetchNameValueDef( - papszMD, pszItem, CPLSPrintf("%.18g", dfDefaultVal))); + papszMD, pszItem, CPLSPrintf("%.17g", dfDefaultVal))); - papszMD = CSLSetNameValue(papszMD, pszItem, CPLSPrintf("%.18g", dfVal)); + papszMD = CSLSetNameValue(papszMD, pszItem, CPLSPrintf("%.17g", dfVal)); } /************************************************************************/ @@ -1718,7 +1718,7 @@ CPLStringList GDALCreateGeolocationMetadata(GDALDatasetH hBaseDS, if (aosMD.FetchNameValue("PIXEL_STEP") == nullptr) { aosMD.SetNameValue( - "PIXEL_STEP", CPLSPrintf("%.18g", static_cast( + "PIXEL_STEP", CPLSPrintf("%.17g", static_cast( GDALGetRasterXSize(hBaseDS)) / nGeoLocXSize)); } @@ -1726,7 +1726,7 @@ CPLStringList GDALCreateGeolocationMetadata(GDALDatasetH hBaseDS, if (aosMD.FetchNameValue("LINE_STEP") == nullptr) { aosMD.SetNameValue( - "LINE_STEP", CPLSPrintf("%.18g", static_cast( + "LINE_STEP", CPLSPrintf("%.17g", static_cast( GDALGetRasterYSize(hBaseDS)) / nGeoLocYSize)); } diff --git a/alg/gdaltransformer.cpp b/alg/gdaltransformer.cpp index 263fbc2fa08d..f7b8b9348024 100644 --- a/alg/gdaltransformer.cpp +++ b/alg/gdaltransformer.cpp @@ -3091,14 +3091,14 @@ static CPLXMLNode *GDALSerializeGenImgProjTransformer(void *pTransformArg) else { CPLsnprintf( - szWork, sizeof(szWork), "%.18g,%.18g,%.18g,%.18g,%.18g,%.18g", + szWork, sizeof(szWork), "%.17g,%.17g,%.17g,%.17g,%.17g,%.17g", psInfo->adfSrcGeoTransform[0], psInfo->adfSrcGeoTransform[1], psInfo->adfSrcGeoTransform[2], psInfo->adfSrcGeoTransform[3], psInfo->adfSrcGeoTransform[4], psInfo->adfSrcGeoTransform[5]); CPLCreateXMLElementAndValue(psTree, "SrcGeoTransform", szWork); CPLsnprintf( - szWork, sizeof(szWork), "%.18g,%.18g,%.18g,%.18g,%.18g,%.18g", + szWork, sizeof(szWork), "%.17g,%.17g,%.17g,%.17g,%.17g,%.17g", psInfo->adfSrcInvGeoTransform[0], psInfo->adfSrcInvGeoTransform[1], psInfo->adfSrcInvGeoTransform[2], psInfo->adfSrcInvGeoTransform[3], psInfo->adfSrcInvGeoTransform[4], psInfo->adfSrcInvGeoTransform[5]); @@ -3128,14 +3128,14 @@ static CPLXMLNode *GDALSerializeGenImgProjTransformer(void *pTransformArg) else { CPLsnprintf( - szWork, sizeof(szWork), "%.18g,%.18g,%.18g,%.18g,%.18g,%.18g", + szWork, sizeof(szWork), "%.17g,%.17g,%.17g,%.17g,%.17g,%.17g", psInfo->adfDstGeoTransform[0], psInfo->adfDstGeoTransform[1], psInfo->adfDstGeoTransform[2], psInfo->adfDstGeoTransform[3], psInfo->adfDstGeoTransform[4], psInfo->adfDstGeoTransform[5]); CPLCreateXMLElementAndValue(psTree, "DstGeoTransform", szWork); CPLsnprintf( - szWork, sizeof(szWork), "%.18g,%.18g,%.18g,%.18g,%.18g,%.18g", + szWork, sizeof(szWork), "%.17g,%.17g,%.17g,%.17g,%.17g,%.17g", psInfo->adfDstInvGeoTransform[0], psInfo->adfDstInvGeoTransform[1], psInfo->adfDstInvGeoTransform[2], psInfo->adfDstInvGeoTransform[3], psInfo->adfDstInvGeoTransform[4], psInfo->adfDstInvGeoTransform[5]); diff --git a/alg/gdalwarpoperation.cpp b/alg/gdalwarpoperation.cpp index bd26ba86a78d..0122fd9ebb94 100644 --- a/alg/gdalwarpoperation.cpp +++ b/alg/gdalwarpoperation.cpp @@ -1381,7 +1381,7 @@ CPLErr GDALWarpOperation::CollectChunkListInternal(int nDstXOff, int nDstYOff, // in case the heuristics would cause issues. #if DEBUG_VERBOSE CPLDebug("WARP", - "dst=(%d,%d,%d,%d) src=(%d,%d,%d,%d) srcfillratio=%.18g, " + "dst=(%d,%d,%d,%d) src=(%d,%d,%d,%d) srcfillratio=%.17g, " "dfTotalMemoryUse=%.1f MB", nDstXOff, nDstYOff, nDstXSize, nDstYSize, nSrcXOff, nSrcYOff, nSrcXSize, nSrcYSize, dfSrcFillRatio, @@ -3165,7 +3165,7 @@ CPLErr GDALWarpOperation::ComputeSourceWindow( #if DEBUG_VERBOSE CPLDebug("WARP", "dst=(%d,%d,%d,%d) raw " - "src=(minx=%.18g,miny=%.18g,maxx=%.18g,maxy=%.18g)", + "src=(minx=%.17g,miny=%.17g,maxx=%.17g,maxy=%.17g)", nDstXOff, nDstYOff, nDstXSize, nDstYSize, dfMinXOut, dfMinYOut, dfMaxXOut, dfMaxYOut); #endif diff --git a/autotest/gcore/cog.py b/autotest/gcore/cog.py index 3e97af03937e..d89a6624d473 100755 --- a/autotest/gcore/cog.py +++ b/autotest/gcore/cog.py @@ -634,8 +634,8 @@ def test_cog_byte_to_web_mercator_manual(): options=[ "BLOCKSIZE=256", "TARGET_SRS=EPSG:3857", - "RES=%.18g" % res, - "EXTENT=%.18g,%.18g,%.18g,%.18g" % (minx, miny, maxx, maxy), + "RES=%.17g" % res, + "EXTENT=%.17g,%.17g,%.17g,%.17g" % (minx, miny, maxx, maxy), ], ) assert ds @@ -674,7 +674,7 @@ def test_cog_byte_to_web_mercator_manual(): gdal.Translate( filename2, filename, - options="-of COG -co TILING_SCHEME=GoogleMapsCompatible -a_ullr %.18g %.18g %.18g %.18g" + options="-of COG -co TILING_SCHEME=GoogleMapsCompatible -a_ullr %.17g %.17g %.17g %.17g" % (minx - eps, maxy + eps, maxx + eps, miny - eps), ) ds = gdal.Open(filename2) diff --git a/autotest/gcore/gdal_stats.py b/autotest/gcore/gdal_stats.py index 227d268d64de..95137a355879 100755 --- a/autotest/gcore/gdal_stats.py +++ b/autotest/gcore/gdal_stats.py @@ -130,7 +130,7 @@ def test_stats_approx_nodata(): os.remove("tmp/minfloat.tif") if nodata != -3.4028234663852886e38: - print("%.18g" % nodata) + print("%.17g" % nodata) pytest.fail("did not get expected nodata") assert stats == [-3.0, 5.0, 1.0, 4.0], "did not get expected stats" @@ -411,7 +411,7 @@ def test_stats_flt_min(): os.remove("tmp/flt_min.tif") if nodata != 1.17549435082228751e-38: - print("%.18g" % nodata) + print("%.17g" % nodata) pytest.fail("did not get expected nodata") assert stats == [0.0, 1.0, 0.33333333333333337, 0.47140452079103168] or stats == [ @@ -450,7 +450,7 @@ def test_stats_dbl_min(): os.remove("tmp/dbl_min.tif") if nodata != 2.22507385850720138e-308: - print("%.18g" % nodata) + print("%.17g" % nodata) pytest.fail("did not get expected nodata") assert stats == [0.0, 1.0, 0.33333333333333337, 0.47140452079103168] or stats == [ diff --git a/autotest/gcore/vrt_read.py b/autotest/gcore/vrt_read.py index 0201ba62526d..2c4d319f4e33 100755 --- a/autotest/gcore/vrt_read.py +++ b/autotest/gcore/vrt_read.py @@ -1352,7 +1352,7 @@ def test_vrt_float32_with_nodata_slightly_below_float_min(): ), "did not get expected nodata in rewritten VRT" if nodata != -3.4028234663852886e38: - print("%.18g" % nodata) + print("%.17g" % nodata) pytest.fail("did not get expected nodata") assert stats == [-3.0, 5.0, 1.0, 4.0], "did not get expected stats" diff --git a/autotest/gcore/vrtmisc.py b/autotest/gcore/vrtmisc.py index e7c5a4519fc8..472f0c9bdc56 100755 --- a/autotest/gcore/vrtmisc.py +++ b/autotest/gcore/vrtmisc.py @@ -965,7 +965,7 @@ def test_vrtmisc_nodata_float32(): # Check that this is still the case after above serialization to .vrt # and re-opening. That is check that we serialize the rounded value with - # full double precision (%.18g) + # full double precision (%.17g) ds = gdal.Open(vrt_filename) nodata_vrt = ds.GetRasterBand(1).GetNoDataValue() assert nodata_vrt == struct.unpack("f", struct.pack("f", nodata))[0] diff --git a/autotest/gdrivers/fits.py b/autotest/gdrivers/fits.py index a00c3b9350d1..dae9ab9461bc 100755 --- a/autotest/gdrivers/fits.py +++ b/autotest/gdrivers/fits.py @@ -505,9 +505,9 @@ def test_fits_vector(): "1.25 + 2.25j", ["1.25 + 2.25j", "2.25 + 1.25j"], ["1.25 + 2.25j", "2.25 + 1.25j"], - "1.25340000000000007 + 2.25j", - ["1.25340000000000007 + 2.25j", "2.25 + 1.25j"], - ["1.25340000000000007 + 2.25j", "2.25 + 1.25j"], + "1.2534000000000001 + 2.25j", + ["1.2534000000000001 + 2.25j", "2.25 + 1.25j"], + ["1.2534000000000001 + 2.25j", "2.25 + 1.25j"], ] f = lyr.GetNextFeature() @@ -817,9 +817,9 @@ def test_fits_vector_write_with_source_fits_metadata(): "1.25 + 2.25j", # ['1.25 + 2.25j', '2.25 + 1.25j'], # ['1.25 + 2.25j', '2.25 + 1.25j'], - "1.25340000000000007 + 2.25j", - # ['1.25340000000000007 + 2.25j', '2.25 + 1.25j'], - # ['1.25340000000000007 + 2.25j', '2.25 + 1.25j'] + "1.2534000000000001 + 2.25j", + # ['1.2534000000000001 + 2.25j', '2.25 + 1.25j'], + # ['1.2534000000000001 + 2.25j', '2.25 + 1.25j'] ] f = lyr.GetNextFeature() @@ -935,9 +935,9 @@ def test_fits_vector_write_without_source_fits_metadata(): "1.25 + 2.25j", # ['1.25 + 2.25j', '2.25 + 1.25j'], # ['1.25 + 2.25j', '2.25 + 1.25j'], - "1.25340000000000007 + 2.25j", - # ['1.25340000000000007 + 2.25j', '2.25 + 1.25j'], - # ['1.25340000000000007 + 2.25j', '2.25 + 1.25j'] + "1.2534000000000001 + 2.25j", + # ['1.2534000000000001 + 2.25j', '2.25 + 1.25j'], + # ['1.2534000000000001 + 2.25j', '2.25 + 1.25j'] ] f = lyr.GetNextFeature() @@ -1056,9 +1056,9 @@ def test_fits_vector_write_without_source_fits_metadata_compute_repeat(): "1.25 + 2.25j", # ['1.25 + 2.25j', '2.25 + 1.25j'], # ['1.25 + 2.25j', '2.25 + 1.25j'], - "1.25340000000000007 + 2.25j", - # ['1.25340000000000007 + 2.25j', '2.25 + 1.25j'], - # ['1.25340000000000007 + 2.25j', '2.25 + 1.25j'] + "1.2534000000000001 + 2.25j", + # ['1.2534000000000001 + 2.25j', '2.25 + 1.25j'], + # ['1.2534000000000001 + 2.25j', '2.25 + 1.25j'] ] f = lyr.GetNextFeature() diff --git a/autotest/ogr/ogr_geojson.py b/autotest/ogr/ogr_geojson.py index 5cc7b962ffb5..8f1d9a254ec6 100755 --- a/autotest/ogr/ogr_geojson.py +++ b/autotest/ogr/ogr_geojson.py @@ -4107,7 +4107,7 @@ def test_ogr_geojson_write_rfc7946_from_3D_crs(tmp_vsimem): ds = ogr.GetDriverByName("GeoJSON").CreateDataSource(filename) lyr = ds.CreateLayer("out", srs=srs_4326_5773, options=["RFC7946=YES"]) f = ogr.Feature(lyr.GetLayerDefn()) - f.SetGeometry(ogr.CreateGeometryFromWkt("POINT(%.18g %.18g %.18g)" % (lon, lat, z))) + f.SetGeometry(ogr.CreateGeometryFromWkt("POINT(%.17g %.17g %.17g)" % (lon, lat, z))) lyr.CreateFeature(f) ds = None diff --git a/autotest/ogr/ogr_geom.py b/autotest/ogr/ogr_geom.py index 39cd29a1db86..e4c5216fd64c 100755 --- a/autotest/ogr/ogr_geom.py +++ b/autotest/ogr/ogr_geom.py @@ -874,11 +874,11 @@ def test_ogr_geom_segmentize(): for i in range(g1.GetPointCount()): if g1.GetPoint(i) != g2.GetPoint(g1.GetPointCount() - 1 - i): print( - "%.18g" + "%.17g" % (g1.GetPoint(i)[0] - g2.GetPoint(g1.GetPointCount() - 1 - i)[0]) ) pytest.fail( - "%.18g" + "%.17g" % (g1.GetPoint(i)[1] - g2.GetPoint(g1.GetPointCount() - 1 - i)[1]) ) @@ -1622,11 +1622,11 @@ def test_ogr_geom_circularstring(): for i in range(g1.GetPointCount()): if g1.GetPoint(i) != g2.GetPoint(g1.GetPointCount() - 1 - i): print( - "%.18g" + "%.17g" % (g1.GetPoint(i)[0] - g2.GetPoint(g1.GetPointCount() - 1 - i)[0]) ) pytest.fail( - "%.18g" + "%.17g" % (g1.GetPoint(i)[1] - g2.GetPoint(g1.GetPointCount() - 1 - i)[1]) ) diff --git a/frmts/daas/daasdataset.cpp b/frmts/daas/daasdataset.cpp index 3c8c566e66c6..0c68c9e31439 100644 --- a/frmts/daas/daasdataset.cpp +++ b/frmts/daas/daasdataset.cpp @@ -1085,7 +1085,7 @@ void GDALDAASDataset::ReadRPCs(const CPLJSONObject &oProperties) continue; } aoRPC.SetNameValue(asRPCSingleValues[i].pszGDALName, - CPLSPrintf("%.18g", dfRPCVal)); + CPLSPrintf("%.17g", dfRPCVal)); } const struct @@ -1110,7 +1110,7 @@ void GDALDAASDataset::ReadRPCs(const CPLJSONObject &oProperties) { if (j > 0) osVal += " "; - osVal += CPLSPrintf("%.18g", oRPCArray[j].ToDouble()); + osVal += CPLSPrintf("%.17g", oRPCArray[j].ToDouble()); } aoRPC.SetNameValue(asRPCArrayValues[i].pszGDALName, osVal.c_str()); diff --git a/frmts/eeda/eedadataset.cpp b/frmts/eeda/eedadataset.cpp index 2742cbb93f93..f41c4b4781d3 100644 --- a/frmts/eeda/eedadataset.cpp +++ b/frmts/eeda/eedadataset.cpp @@ -799,7 +799,7 @@ CPLString GDALEEDALayer::BuildFilter(swq_expr_node *poNode, bool bIsAndTopLevel) else if (poNode->papoSubExpr[1]->field_type == SWQ_FLOAT) { osFilter += - CPLSPrintf("%.18g", poNode->papoSubExpr[1]->float_value); + CPLSPrintf("%.17g", poNode->papoSubExpr[1]->float_value); } else { @@ -890,7 +890,7 @@ CPLString GDALEEDALayer::BuildFilter(swq_expr_node *poNode, bool bIsAndTopLevel) else if (poNode->papoSubExpr[i]->field_type == SWQ_FLOAT) { osFilter += - CPLSPrintf("%.18g", poNode->papoSubExpr[i]->float_value); + CPLSPrintf("%.17g", poNode->papoSubExpr[i]->float_value); } else { diff --git a/frmts/esric/esric_dataset.cpp b/frmts/esric/esric_dataset.cpp index c92d7132d512..7ff5fdd585f4 100644 --- a/frmts/esric/esric_dataset.cpp +++ b/frmts/esric/esric_dataset.cpp @@ -722,10 +722,10 @@ GDALDataset *ECDataset::Open(GDALOpenInfo *poOpenInfo, return nullptr; } aosOptions.AddString("-projwin"); - aosOptions.AddString(CPLSPrintf("%.18g", ds->m_sFullExtent.MinX)); - aosOptions.AddString(CPLSPrintf("%.18g", ds->m_sFullExtent.MaxY)); - aosOptions.AddString(CPLSPrintf("%.18g", ds->m_sFullExtent.MaxX)); - aosOptions.AddString(CPLSPrintf("%.18g", ds->m_sFullExtent.MinY)); + aosOptions.AddString(CPLSPrintf("%.17g", ds->m_sFullExtent.MinX)); + aosOptions.AddString(CPLSPrintf("%.17g", ds->m_sFullExtent.MaxY)); + aosOptions.AddString(CPLSPrintf("%.17g", ds->m_sFullExtent.MaxX)); + aosOptions.AddString(CPLSPrintf("%.17g", ds->m_sFullExtent.MinY)); } else if (pszExtentSource && EQUAL(pszExtentSource, "INITIAL_EXTENT")) { @@ -741,13 +741,13 @@ GDALDataset *ECDataset::Open(GDALOpenInfo *poOpenInfo, } aosOptions.AddString("-projwin"); aosOptions.AddString( - CPLSPrintf("%.18g", ds->m_sInitialExtent.MinX)); + CPLSPrintf("%.17g", ds->m_sInitialExtent.MinX)); aosOptions.AddString( - CPLSPrintf("%.18g", ds->m_sInitialExtent.MaxY)); + CPLSPrintf("%.17g", ds->m_sInitialExtent.MaxY)); aosOptions.AddString( - CPLSPrintf("%.18g", ds->m_sInitialExtent.MaxX)); + CPLSPrintf("%.17g", ds->m_sInitialExtent.MaxX)); aosOptions.AddString( - CPLSPrintf("%.18g", ds->m_sInitialExtent.MinY)); + CPLSPrintf("%.17g", ds->m_sInitialExtent.MinY)); } if (!aosOptions.empty()) diff --git a/frmts/fits/fitsdataset.cpp b/frmts/fits/fitsdataset.cpp index 50047f8326a9..5da0eeb9ad41 100644 --- a/frmts/fits/fitsdataset.cpp +++ b/frmts/fits/fitsdataset.cpp @@ -829,7 +829,7 @@ OGRFeature *FITSLayer::GetFeature(GIntBig nFID) CPLStringList aosList; for (int i = 0; i < nRepeat; ++i) aosList.AddString( - CPLSPrintf("%.18g + %.18gj", x[2 * i + 0], x[2 * i + 1])); + CPLSPrintf("%.17g + %.17gj", x[2 * i + 0], x[2 * i + 1])); if (nRepeat == 1) poFeature->SetField(iField, aosList[0]); else @@ -844,7 +844,7 @@ OGRFeature *FITSLayer::GetFeature(GIntBig nFID) for (int i = 0; i < nRepeat; ++i) { aosList.AddString( - CPLSPrintf("%.18g + %.18gj", x[2 * i + 0], x[2 * i + 1])); + CPLSPrintf("%.17g + %.17gj", x[2 * i + 0], x[2 * i + 1])); } if (nRepeat == 1) poFeature->SetField(iField, aosList[0]); diff --git a/frmts/gtiff/cogdriver.cpp b/frmts/gtiff/cogdriver.cpp index f5c5045ac212..284bc99caa7a 100644 --- a/frmts/gtiff/cogdriver.cpp +++ b/frmts/gtiff/cogdriver.cpp @@ -267,13 +267,13 @@ static bool COGGetWarpingCharacteristics( aosOptions.AddString("VRT"); aosOptions.AddString("-projwin"); aosOptions.AddString( - CPLSPrintf("%.18g", adfSrcGeoTransform[0])); - aosOptions.AddString(CPLSPrintf("%.18g", maxLat)); + CPLSPrintf("%.17g", adfSrcGeoTransform[0])); + aosOptions.AddString(CPLSPrintf("%.17g", maxLat)); aosOptions.AddString( - CPLSPrintf("%.18g", adfSrcGeoTransform[0] + + CPLSPrintf("%.17g", adfSrcGeoTransform[0] + poSrcDS->GetRasterXSize() * adfSrcGeoTransform[1])); - aosOptions.AddString(CPLSPrintf("%.18g", minLat)); + aosOptions.AddString(CPLSPrintf("%.17g", minLat)); auto psOptions = GDALTranslateOptionsNew(aosOptions.List(), nullptr); poTmpDS.reset(GDALDataset::FromHandle(GDALTranslate( @@ -615,10 +615,10 @@ static std::unique_ptr CreateReprojectedDS( papszArg = CSLAddString(papszArg, "-t_srs"); papszArg = CSLAddString(papszArg, osTargetSRS); papszArg = CSLAddString(papszArg, "-te"); - papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g", dfMinX)); - papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g", dfMinY)); - papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g", dfMaxX)); - papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g", dfMaxY)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.17g", dfMinX)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.17g", dfMinY)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.17g", dfMaxX)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.17g", dfMaxY)); papszArg = CSLAddString(papszArg, "-ts"); papszArg = CSLAddString(papszArg, CPLSPrintf("%d", nXSize)); papszArg = CSLAddString(papszArg, CPLSPrintf("%d", nYSize)); @@ -632,8 +632,8 @@ static std::unique_ptr CreateReprojectedDS( { // Try to produce exactly square pixels papszArg = CSLAddString(papszArg, "-tr"); - papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g", dfRes)); - papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g", dfRes)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.17g", dfRes)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.17g", dfRes)); } else { diff --git a/frmts/gtiff/geotiff.cpp b/frmts/gtiff/geotiff.cpp index 21406e1dc551..a7ab3a68035d 100644 --- a/frmts/gtiff/geotiff.cpp +++ b/frmts/gtiff/geotiff.cpp @@ -583,7 +583,7 @@ CPLString GTiffFormatGDALNoDataTagValue(double dfNoData) if (CPLIsNan(dfNoData)) osVal = "nan"; else - osVal.Printf("%.18g", dfNoData); + osVal.Printf("%.17g", dfNoData); return osVal; } diff --git a/frmts/gtiff/gtiffdataset_write.cpp b/frmts/gtiff/gtiffdataset_write.cpp index 402368800c82..eff6f336e43a 100644 --- a/frmts/gtiff/gtiffdataset_write.cpp +++ b/frmts/gtiff/gtiffdataset_write.cpp @@ -4185,10 +4185,10 @@ bool GTiffDataset::WriteMetadata(GDALDataset *poSrcDS, TIFF *l_hTIFF, { char szValue[128] = {}; - CPLsnprintf(szValue, sizeof(szValue), "%.18g", dfOffset); + CPLsnprintf(szValue, sizeof(szValue), "%.17g", dfOffset); AppendMetadataItem(&psRoot, &psTail, "OFFSET", szValue, nBand, "offset", ""); - CPLsnprintf(szValue, sizeof(szValue), "%.18g", dfScale); + CPLsnprintf(szValue, sizeof(szValue), "%.17g", dfScale); AppendMetadataItem(&psRoot, &psTail, "SCALE", szValue, nBand, "scale", ""); } diff --git a/frmts/gtiff/gtiffrasterband_write.cpp b/frmts/gtiff/gtiffrasterband_write.cpp index d91eddbbab4c..4b18ac4b3754 100644 --- a/frmts/gtiff/gtiffrasterband_write.cpp +++ b/frmts/gtiff/gtiffrasterband_write.cpp @@ -756,9 +756,9 @@ CPLErr GTiffRasterBand::SetNoDataValue(double dfNoData) { ReportError( CE_Warning, CPLE_AppDefined, - "Setting nodata to %.18g on band %d, but band %d has nodata " - "at %.18g. The TIFFTAG_GDAL_NODATA only support one value " - "per dataset. This value of %.18g will be used for all bands " + "Setting nodata to %.17g on band %d, but band %d has nodata " + "at %.17g. The TIFFTAG_GDAL_NODATA only support one value " + "per dataset. This value of %.17g will be used for all bands " "on re-opening", dfNoData, nBand, nOtherBand, dfOtherNoData, dfNoData); } diff --git a/frmts/hdf5/bagdataset.cpp b/frmts/hdf5/bagdataset.cpp index 7fceddf017ca..ece749c1851e 100644 --- a/frmts/hdf5/bagdataset.cpp +++ b/frmts/hdf5/bagdataset.cpp @@ -5277,11 +5277,11 @@ CPLString BAGCreator::GenerateMetadata(int nXSize, int nYSize, } osOptions.SetNameValue("VAR_RESX", - CPLSPrintf("%.18g", padfGeoTransform[1])); + CPLSPrintf("%.17g", padfGeoTransform[1])); osOptions.SetNameValue("VAR_RESY", - CPLSPrintf("%.18g", fabs(padfGeoTransform[5]))); + CPLSPrintf("%.17g", fabs(padfGeoTransform[5]))); osOptions.SetNameValue( - "VAR_RES", CPLSPrintf("%.18g", std::max(padfGeoTransform[1], + "VAR_RES", CPLSPrintf("%.17g", std::max(padfGeoTransform[1], fabs(padfGeoTransform[5])))); char *pszProjection = nullptr; @@ -5345,7 +5345,7 @@ CPLString BAGCreator::GenerateMetadata(int nXSize, int nYSize, } osOptions.SetNameValue( "VAR_CORNER_POINTS", - CPLSPrintf("%.18g,%.18g %.18g,%.18g", dfMinX, dfMinY, dfMaxX, dfMaxY)); + CPLSPrintf("%.17g,%.17g %.17g,%.17g", dfMinX, dfMinY, dfMaxX, dfMaxY)); double adfCornerX[4] = {dfMinX, dfMinX, dfMaxX, dfMaxX}; double adfCornerY[4] = {dfMinY, dfMaxY, dfMaxY, dfMinY}; @@ -5372,10 +5372,10 @@ CPLString BAGCreator::GenerateMetadata(int nXSize, int nYSize, std::max(adfCornerX[2], adfCornerX[3])); double dfNorth = std::max(std::max(adfCornerY[0], adfCornerY[1]), std::max(adfCornerY[2], adfCornerY[3])); - osOptions.SetNameValue("VAR_WEST_LONGITUDE", CPLSPrintf("%.18g", dfWest)); - osOptions.SetNameValue("VAR_SOUTH_LATITUDE", CPLSPrintf("%.18g", dfSouth)); - osOptions.SetNameValue("VAR_EAST_LONGITUDE", CPLSPrintf("%.18g", dfEast)); - osOptions.SetNameValue("VAR_NORTH_LATITUDE", CPLSPrintf("%.18g", dfNorth)); + osOptions.SetNameValue("VAR_WEST_LONGITUDE", CPLSPrintf("%.17g", dfWest)); + osOptions.SetNameValue("VAR_SOUTH_LATITUDE", CPLSPrintf("%.17g", dfSouth)); + osOptions.SetNameValue("VAR_EAST_LONGITUDE", CPLSPrintf("%.17g", dfEast)); + osOptions.SetNameValue("VAR_NORTH_LATITUDE", CPLSPrintf("%.17g", dfNorth)); if (!SubstituteVariables(psMain, osOptions.List())) { diff --git a/frmts/hdf5/gh5_convenience.cpp b/frmts/hdf5/gh5_convenience.cpp index e48b5c630d21..e422233cbb3f 100644 --- a/frmts/hdf5/gh5_convenience.cpp +++ b/frmts/hdf5/gh5_convenience.cpp @@ -194,7 +194,7 @@ bool GH5_FetchAttribute(hid_t loc_id, const char *pszAttrName, double &dfResult, { CPLDebug("HDF5", "Loss of accuracy when reading attribute %s. " - "Value " CPL_FRMT_GIB " will be read as %.18g", + "Value " CPL_FRMT_GIB " will be read as %.17g", pszAttrName, static_cast(nVal), dfResult); } } @@ -206,7 +206,7 @@ bool GH5_FetchAttribute(hid_t loc_id, const char *pszAttrName, double &dfResult, { CPLDebug("HDF5", "Loss of accuracy when reading attribute %s. " - "Value " CPL_FRMT_GUIB " will be read as %.18g", + "Value " CPL_FRMT_GUIB " will be read as %.17g", pszAttrName, static_cast(nVal), dfResult); } } diff --git a/frmts/mbtiles/mbtilesdataset.cpp b/frmts/mbtiles/mbtilesdataset.cpp index 6a8249a16f9d..1d3549ca0d53 100644 --- a/frmts/mbtiles/mbtilesdataset.cpp +++ b/frmts/mbtiles/mbtilesdataset.cpp @@ -1135,7 +1135,7 @@ CPLErr MBTilesDataset::SetGeoTransform(double *padfGeoTransform) if (miny < -ok_maxy) miny = -ok_maxy; - osBounds.Printf("%.18g,%.18g,%.18g,%.18g", minx, miny, maxx, maxy); + osBounds.Printf("%.17g,%.17g,%.17g,%.17g", minx, miny, maxx, maxy); } char *pszSQL = sqlite3_mprintf( @@ -3208,13 +3208,13 @@ GDALDataset *MBTilesDataset::CreateCopy(const char *pszFilename, aosOptions.AddString("VRT"); aosOptions.AddString("-projwin"); aosOptions.AddString( - CPLSPrintf("%.18g", adfSrcGeoTransform[0])); - aosOptions.AddString(CPLSPrintf("%.18g", maxLat)); + CPLSPrintf("%.17g", adfSrcGeoTransform[0])); + aosOptions.AddString(CPLSPrintf("%.17g", maxLat)); aosOptions.AddString( - CPLSPrintf("%.18g", adfSrcGeoTransform[0] + + CPLSPrintf("%.17g", adfSrcGeoTransform[0] + poSrcDS->GetRasterXSize() * adfSrcGeoTransform[1])); - aosOptions.AddString(CPLSPrintf("%.18g", minLat)); + aosOptions.AddString(CPLSPrintf("%.17g", minLat)); auto psOptions = GDALTranslateOptionsNew(aosOptions.List(), nullptr); poTmpDS.reset(GDALDataset::FromHandle(GDALTranslate( diff --git a/frmts/netcdf/netcdfdataset.cpp b/frmts/netcdf/netcdfdataset.cpp index 5e5ce8d0cbe4..86b8dbf7349a 100644 --- a/frmts/netcdf/netcdfdataset.cpp +++ b/frmts/netcdf/netcdfdataset.cpp @@ -1469,7 +1469,7 @@ CPLErr netCDFRasterBand::SetNoDataValue(double dfNoData) !reinterpret_cast(poDS)->GetDefineMode()) { CPLDebug("GDAL_netCDF", - "Setting NoDataValue to %.18g (previously set to %.18g) " + "Setting NoDataValue to %.17g (previously set to %.17g) " "but file is no longer in define mode (id #%d, band #%d)", dfNoData, m_dfNoDataValue, cdfid, nBand); } @@ -1477,7 +1477,7 @@ CPLErr netCDFRasterBand::SetNoDataValue(double dfNoData) else { CPLDebug("GDAL_netCDF", - "Setting NoDataValue to %.18g (id #%d, band #%d)", + "Setting NoDataValue to %.17g (id #%d, band #%d)", dfNoData, cdfid, nBand); } #endif diff --git a/frmts/ogcapi/gdalogcapidataset.cpp b/frmts/ogcapi/gdalogcapidataset.cpp index 2d51f64ce230..da3f74d6ac5e 100644 --- a/frmts/ogcapi/gdalogcapidataset.cpp +++ b/frmts/ogcapi/gdalogcapidataset.cpp @@ -832,16 +832,16 @@ bool OGCAPIDataset::InitFromCollection(GDALOpenInfo *poOpenInfo, CSLFetchNameValue(poOpenInfo->papszOpenOptions, "MINX") == nullptr; const double dfXMin = CPLAtof(CSLFetchNameValueDef(poOpenInfo->papszOpenOptions, "MINX", - CPLSPrintf("%.18g", oBbox[0].ToDouble()))); + CPLSPrintf("%.17g", oBbox[0].ToDouble()))); const double dfYMin = CPLAtof(CSLFetchNameValueDef(poOpenInfo->papszOpenOptions, "MINY", - CPLSPrintf("%.18g", oBbox[1].ToDouble()))); + CPLSPrintf("%.17g", oBbox[1].ToDouble()))); const double dfXMax = CPLAtof(CSLFetchNameValueDef(poOpenInfo->papszOpenOptions, "MAXX", - CPLSPrintf("%.18g", oBbox[2].ToDouble()))); + CPLSPrintf("%.17g", oBbox[2].ToDouble()))); const double dfYMax = CPLAtof(CSLFetchNameValueDef(poOpenInfo->papszOpenOptions, "MAXY", - CPLSPrintf("%.18g", oBbox[3].ToDouble()))); + CPLSPrintf("%.17g", oBbox[3].ToDouble()))); auto oScaleDenominator = oRoot["scaleDenominator"]; @@ -1260,10 +1260,10 @@ bool OGCAPIDataset::InitWithMapAPI(GDALOpenInfo *poOpenInfo, " %s" " " " " - " %.18g" - " %.18g" - " %.18g" - " %.18g" + " %.17g" + " %.17g" + " %.17g" + " %.17g" " %d" " %d" " " @@ -1531,10 +1531,10 @@ bool OGCAPIDataset::InitWithCoverageAPI(GDALOpenInfo *poOpenInfo, " %s" " " " " - " %.18g" - " %.18g" - " %.18g" - " %.18g" + " %.17g" + " %.17g" + " %.17g" + " %.17g" " %d" " %d" " " @@ -2120,10 +2120,10 @@ bool OGCAPIDataset::InitWithTilesAPI(GDALOpenInfo *poOpenInfo, " %d" " " " " - " %.18g" - " %.18g" - " %.18g" - " %.18g" + " %.17g" + " %.17g" + " %.17g" + " %.17g" " 0" " %d" " %d" @@ -2253,10 +2253,10 @@ bool OGCAPIDataset::InitWithTilesAPI(GDALOpenInfo *poOpenInfo, argv.AddString("-of"); argv.AddString("VRT"); argv.AddString("-projwin"); - argv.AddString(CPLSPrintf("%.18g", dfXMin)); - argv.AddString(CPLSPrintf("%.18g", dfYMax)); - argv.AddString(CPLSPrintf("%.18g", dfXMax)); - argv.AddString(CPLSPrintf("%.18g", dfYMin)); + argv.AddString(CPLSPrintf("%.17g", dfXMin)); + argv.AddString(CPLSPrintf("%.17g", dfYMax)); + argv.AddString(CPLSPrintf("%.17g", dfXMax)); + argv.AddString(CPLSPrintf("%.17g", dfYMin)); GDALTranslateOptions *psOptions = GDALTranslateOptionsNew(argv.List(), nullptr); GDALDatasetH hCroppedDS = GDALTranslate( @@ -2524,19 +2524,19 @@ GDALDataset *OGCAPITiledLayer::OpenTile(int nX, int nY, bool &bEmptyContent) m_bInvertAxis ? m_oTileMatrix.mTopLeftX : m_oTileMatrix.mTopLeftY; aosOpenOptions.SetNameValue( "@GEOREF_TOPX", - CPLSPrintf("%.18g", dfOriX + nX * m_oTileMatrix.mResX * + CPLSPrintf("%.17g", dfOriX + nX * m_oTileMatrix.mResX * m_oTileMatrix.mTileWidth)); aosOpenOptions.SetNameValue( "@GEOREF_TOPY", - CPLSPrintf("%.18g", dfOriY - nY * m_oTileMatrix.mResY * + CPLSPrintf("%.17g", dfOriY - nY * m_oTileMatrix.mResY * m_oTileMatrix.mTileHeight)); aosOpenOptions.SetNameValue( "@GEOREF_TILEDIMX", - CPLSPrintf("%.18g", nCoalesce * m_oTileMatrix.mResX * + CPLSPrintf("%.17g", nCoalesce * m_oTileMatrix.mResX * m_oTileMatrix.mTileWidth)); aosOpenOptions.SetNameValue( "@GEOREF_TILEDIMY", - CPLSPrintf("%.18g", + CPLSPrintf("%.17g", m_oTileMatrix.mResY * m_oTileMatrix.mTileWidth)); papszOpenOptions = aosOpenOptions.List(); diff --git a/frmts/pdf/pdfcreatefromcomposition.cpp b/frmts/pdf/pdfcreatefromcomposition.cpp index 1e31cca481a7..f7eb2a9deab6 100644 --- a/frmts/pdf/pdfcreatefromcomposition.cpp +++ b/frmts/pdf/pdfcreatefromcomposition.cpp @@ -648,13 +648,13 @@ bool GDALPDFComposerWriter::GenerateGeoreferencing( if (psBoundingBox) { bboxX1 = CPLAtof( - CPLGetXMLValue(psBoundingBox, "x1", CPLSPrintf("%.18g", bboxX1))); + CPLGetXMLValue(psBoundingBox, "x1", CPLSPrintf("%.17g", bboxX1))); bboxY1 = CPLAtof( - CPLGetXMLValue(psBoundingBox, "y1", CPLSPrintf("%.18g", bboxY1))); + CPLGetXMLValue(psBoundingBox, "y1", CPLSPrintf("%.17g", bboxY1))); bboxX2 = CPLAtof( - CPLGetXMLValue(psBoundingBox, "x2", CPLSPrintf("%.18g", bboxX2))); + CPLGetXMLValue(psBoundingBox, "x2", CPLSPrintf("%.17g", bboxX2))); bboxY2 = CPLAtof( - CPLGetXMLValue(psBoundingBox, "y2", CPLSPrintf("%.18g", bboxY2))); + CPLGetXMLValue(psBoundingBox, "y2", CPLSPrintf("%.17g", bboxY2))); if (bboxX2 <= bboxX1 || bboxY2 <= bboxY1) { CPLError(CE_Failure, CPLE_AppDefined, "Invalid BoundingBox"); @@ -1350,9 +1350,9 @@ bool GDALPDFComposerWriter::WriteRaster(const CPLXMLNode *psNode, double dfX1 = CPLAtof(CPLGetXMLValue(psNode, "x1", "0")); double dfY1 = CPLAtof(CPLGetXMLValue(psNode, "y1", "0")); double dfX2 = CPLAtof(CPLGetXMLValue( - psNode, "x2", CPLSPrintf("%.18g", oPageContext.m_dfWidthInUserUnit))); + psNode, "x2", CPLSPrintf("%.17g", oPageContext.m_dfWidthInUserUnit))); double dfY2 = CPLAtof(CPLGetXMLValue( - psNode, "y2", CPLSPrintf("%.18g", oPageContext.m_dfHeightInUserUnit))); + psNode, "y2", CPLSPrintf("%.17g", oPageContext.m_dfHeightInUserUnit))); if (dfX2 <= dfX1 || dfY2 <= dfY1) { CPLError(CE_Failure, CPLE_AppDefined, "Invalid x1,y1,x2,y2"); diff --git a/frmts/pds/isis3dataset.cpp b/frmts/pds/isis3dataset.cpp index 714f1b5fecbf..bacaab84372f 100644 --- a/frmts/pds/isis3dataset.cpp +++ b/frmts/pds/isis3dataset.cpp @@ -1956,8 +1956,8 @@ GDALDataset *ISIS3Dataset::Open(GDALOpenInfo *poOpenInfo) // acknowledged in // https://pds-imaging.jpl.nasa.gov/documentation/Cassini_BIDRSIS.PDF in // the middle of page 10 - oProj4String.Printf("+proj=ob_tran +o_proj=eqc +o_lon_p=%.18g " - "+o_lat_p=%.18g +lon_0=%.18g", + oProj4String.Printf("+proj=ob_tran +o_proj=eqc +o_lon_p=%.17g " + "+o_lat_p=%.17g +lon_0=%.17g", -poleRotation, 180 - poleLatitude, poleLongitude); oSRS.SetFromUserInput(oProj4String); } @@ -3762,7 +3762,7 @@ void ISIS3Dataset::SerializeAsPDL(VSILFILE *fp, const CPLJSONObject &oObj, } else { - VSIFPrintfL(fp, "%s%s%s = %.18g <%s>\n", + VSIFPrintfL(fp, "%s%s%s = %.17g <%s>\n", osIndentation.c_str(), osKey.c_str(), osPadding.c_str(), dfVal, osUnit.c_str()); @@ -3839,7 +3839,7 @@ void ISIS3Dataset::SerializeAsPDL(VSILFILE *fp, const CPLJSONObject &oObj, } else { - VSIFPrintfL(fp, "%s%s%s = %.18g\n", osIndentation.c_str(), + VSIFPrintfL(fp, "%s%s%s = %.17g\n", osIndentation.c_str(), osKey.c_str(), osPadding.c_str(), dfVal); } } @@ -3933,7 +3933,7 @@ void ISIS3Dataset::SerializeAsPDL(VSILFILE *fp, const CPLJSONObject &oObj, } else { - osVal = CPLSPrintf("%.18g", dfVal); + osVal = CPLSPrintf("%.17g", dfVal); } const size_t nValLen = osVal.size(); if (nFirstPos < WIDTH && idx > 0 && diff --git a/frmts/pds/pds4dataset.cpp b/frmts/pds/pds4dataset.cpp index f91481f49fce..1fa0d1821dce 100644 --- a/frmts/pds/pds4dataset.cpp +++ b/frmts/pds/pds4dataset.cpp @@ -1171,8 +1171,8 @@ void PDS4Dataset::ReadGeoreferencing(CPLXMLNode *psProduct) CPLString oProj4String; // Cf isis3dataset.cpp comments for ObliqueCylindrical - oProj4String.Printf("+proj=ob_tran +o_proj=eqc +o_lon_p=%.18g " - "+o_lat_p=%.18g +lon_0=%.18g", + oProj4String.Printf("+proj=ob_tran +o_proj=eqc +o_lon_p=%.17g " + "+o_lat_p=%.17g +lon_0=%.17g", -poleRotation, 180 - poleLatitude, poleLongitude); oSRS.SetFromUserInput(oProj4String); @@ -2261,22 +2261,22 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psBC, (osPrefix + "west_bounding_coordinate").c_str(), - CPLSPrintf("%.18g", dfWest)), + CPLSPrintf("%.17g", dfWest)), "unit", "deg"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psBC, (osPrefix + "east_bounding_coordinate").c_str(), - CPLSPrintf("%.18g", dfEast)), + CPLSPrintf("%.17g", dfEast)), "unit", "deg"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psBC, (osPrefix + "north_bounding_coordinate").c_str(), - CPLSPrintf("%.18g", dfNorth)), + CPLSPrintf("%.17g", dfNorth)), "unit", "deg"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psBC, (osPrefix + "south_bounding_coordinate").c_str(), - CPLSPrintf("%.18g", dfSouth)), + CPLSPrintf("%.17g", dfSouth)), "unit", "deg"); CPLXMLNode *psSRI = @@ -2605,7 +2605,7 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, { CPLXMLNode *psParam = CPLCreateXMLElementAndValue( psProj, (osPrefix + aoProjParams[i].first).c_str(), - CPLSPrintf("%.18g", aoProjParams[i].second)); + CPLSPrintf("%.17g", aoProjParams[i].second)); if (!STARTS_WITH(aoProjParams[i].first, "scale_factor")) { CPLAddXMLAttributeAndValue(psParam, "unit", "deg"); @@ -2621,7 +2621,7 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psOLA, (osPrefix + "azimuthal_angle").c_str(), - CPLSPrintf("%.18g", + CPLSPrintf("%.17g", m_oSRS.GetNormProjParm(SRS_PP_AZIMUTH, 0.0))), "unit", "deg"); ; @@ -2630,7 +2630,7 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLCreateXMLElementAndValue( psOLA, (osPrefix + "azimuth_measure_point_longitude").c_str(), - CPLSPrintf("%.18g", FixLong(m_oSRS.GetNormProjParm( + CPLSPrintf("%.17g", FixLong(m_oSRS.GetNormProjParm( SRS_PP_CENTRAL_MERIDIAN, 0.0)))), "unit", "deg"); @@ -2650,7 +2650,7 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, if (dfScaleFactor != 1.0) { CPLError(CE_Warning, CPLE_NotSupported, - "Scale factor on initial support = %.18g cannot " + "Scale factor on initial support = %.17g cannot " "be encoded in PDS4", dfScaleFactor); } @@ -2660,7 +2660,7 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLCreateXMLElementAndValue( psProj, (osPrefix + "scale_factor_at_projection_origin").c_str(), - CPLSPrintf("%.18g", m_oSRS.GetNormProjParm( + CPLSPrintf("%.17g", m_oSRS.GetNormProjParm( SRS_PP_SCALE_FACTOR, 0.0))); CPLAddXMLChild(psProj, psOLA); @@ -2670,7 +2670,7 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLCreateXMLElementAndValue( psProj, (osPrefix + "latitude_of_projection_origin").c_str(), - CPLSPrintf("%.18g", m_oSRS.GetNormProjParm( + CPLSPrintf("%.17g", m_oSRS.GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0))), "unit", "deg"); } @@ -2685,7 +2685,7 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, if (dfScaleFactor != 1.0) { CPLError(CE_Warning, CPLE_NotSupported, - "Scale factor on initial support = %.18g cannot " + "Scale factor on initial support = %.17g cannot " "be encoded in PDS4", dfScaleFactor); } @@ -2695,7 +2695,7 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLCreateXMLElementAndValue( psProj, (osPrefix + "scale_factor_at_projection_origin").c_str(), - CPLSPrintf("%.18g", m_oSRS.GetNormProjParm( + CPLSPrintf("%.17g", m_oSRS.GetNormProjParm( SRS_PP_SCALE_FACTOR, 0.0))); } @@ -2707,13 +2707,13 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psOLPG1, (osPrefix + "oblique_line_latitude").c_str(), - CPLSPrintf("%.18g", m_oSRS.GetNormProjParm( + CPLSPrintf("%.17g", m_oSRS.GetNormProjParm( SRS_PP_LATITUDE_OF_POINT_1, 0.0))), "unit", "deg"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psOLPG1, (osPrefix + "oblique_line_longitude").c_str(), - CPLSPrintf("%.18g", + CPLSPrintf("%.17g", FixLong(m_oSRS.GetNormProjParm( SRS_PP_LONGITUDE_OF_POINT_1, 0.0)))), "unit", "deg"); @@ -2723,13 +2723,13 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psOLPG2, (osPrefix + "oblique_line_latitude").c_str(), - CPLSPrintf("%.18g", m_oSRS.GetNormProjParm( + CPLSPrintf("%.17g", m_oSRS.GetNormProjParm( SRS_PP_LATITUDE_OF_POINT_2, 0.0))), "unit", "deg"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psOLPG2, (osPrefix + "oblique_line_longitude").c_str(), - CPLSPrintf("%.18g", m_oSRS.GetNormProjParm( + CPLSPrintf("%.17g", m_oSRS.GetNormProjParm( SRS_PP_LONGITUDE_OF_POINT_2, 0.0))), "unit", "deg"); @@ -2747,7 +2747,7 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLCreateXMLElementAndValue( psProj, (osPrefix + "latitude_of_projection_origin").c_str(), - CPLSPrintf("%.18g", FixLong(m_oSRS.GetNormProjParm( + CPLSPrintf("%.17g", FixLong(m_oSRS.GetNormProjParm( SRS_PP_LATITUDE_OF_ORIGIN, 0.0)))), "unit", "deg"); } @@ -2796,22 +2796,22 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psCR, (osPrefix + "pixel_resolution_x").c_str(), - CPLSPrintf("%.18g", dfUnrotatedResX * dfDegToMeter)), + CPLSPrintf("%.17g", dfUnrotatedResX * dfDegToMeter)), "unit", "m/pixel"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psCR, (osPrefix + "pixel_resolution_y").c_str(), - CPLSPrintf("%.18g", -dfUnrotatedResY * dfDegToMeter)), + CPLSPrintf("%.17g", -dfUnrotatedResY * dfDegToMeter)), "unit", "m/pixel"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psCR, (osPrefix + "pixel_scale_x").c_str(), - CPLSPrintf("%.18g", 1.0 / (dfUnrotatedResX))), + CPLSPrintf("%.17g", 1.0 / (dfUnrotatedResX))), "unit", "pixel/deg"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psCR, (osPrefix + "pixel_scale_y").c_str(), - CPLSPrintf("%.18g", 1.0 / (-dfUnrotatedResY))), + CPLSPrintf("%.17g", 1.0 / (-dfUnrotatedResY))), "unit", "pixel/deg"); } else if (m_oSRS.IsProjected()) @@ -2819,23 +2819,23 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psCR, (osPrefix + "pixel_resolution_x").c_str(), - CPLSPrintf("%.18g", dfUnrotatedResX * dfLinearUnits)), + CPLSPrintf("%.17g", dfUnrotatedResX * dfLinearUnits)), "unit", "m/pixel"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psCR, (osPrefix + "pixel_resolution_y").c_str(), - CPLSPrintf("%.18g", -dfUnrotatedResY * dfLinearUnits)), + CPLSPrintf("%.17g", -dfUnrotatedResY * dfLinearUnits)), "unit", "m/pixel"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psCR, (osPrefix + "pixel_scale_x").c_str(), - CPLSPrintf("%.18g", dfDegToMeter / + CPLSPrintf("%.17g", dfDegToMeter / (dfUnrotatedResX * dfLinearUnits))), "unit", "pixel/deg"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psCR, (osPrefix + "pixel_scale_y").c_str(), - CPLSPrintf("%.18g", dfDegToMeter / (-dfUnrotatedResY * + CPLSPrintf("%.17g", dfDegToMeter / (-dfUnrotatedResY * dfLinearUnits))), "unit", "pixel/deg"); } @@ -2856,12 +2856,12 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psGT, (osPrefix + "upperleft_corner_x").c_str(), - CPLSPrintf("%.18g", dfULX * dfDegToMeter)), + CPLSPrintf("%.17g", dfULX * dfDegToMeter)), "unit", "m"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psGT, (osPrefix + "upperleft_corner_y").c_str(), - CPLSPrintf("%.18g", dfULY * dfDegToMeter)), + CPLSPrintf("%.17g", dfULY * dfDegToMeter)), "unit", "m"); } else if (m_oSRS.IsProjected()) @@ -2869,12 +2869,12 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psGT, (osPrefix + "upperleft_corner_x").c_str(), - CPLSPrintf("%.18g", dfULX * dfLinearUnits)), + CPLSPrintf("%.17g", dfULX * dfLinearUnits)), "unit", "m"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( psGT, (osPrefix + "upperleft_corner_y").c_str(), - CPLSPrintf("%.18g", dfULY * dfLinearUnits)), + CPLSPrintf("%.17g", dfULY * dfLinearUnits)), "unit", "m"); } } @@ -2945,7 +2945,7 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, (osPrefix + (bUseLDD1930RadiusNames ? "a_axis_radius" : "semi_major_radius")) .c_str(), - CPLSPrintf("%.18g", dfSemiMajor)), + CPLSPrintf("%.17g", dfSemiMajor)), "unit", "m"); // No, this is not a bug. The PDS4 b_axis_radius/semi_minor_radius is the // minor radius on the equatorial plane. Which in WKT doesn't really exist, @@ -2956,7 +2956,7 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, (osPrefix + (bUseLDD1930RadiusNames ? "b_axis_radius" : "semi_minor_radius")) .c_str(), - CPLSPrintf("%.18g", dfSemiMajor)), + CPLSPrintf("%.17g", dfSemiMajor)), "unit", "m"); CPLAddXMLAttributeAndValue( CPLCreateXMLElementAndValue( @@ -2964,7 +2964,7 @@ void PDS4Dataset::WriteGeoreferencing(CPLXMLNode *psCart, (osPrefix + (bUseLDD1930RadiusNames ? "c_axis_radius" : "polar_radius")) .c_str(), - CPLSPrintf("%.18g", dfSemiMinor)), + CPLSPrintf("%.17g", dfSemiMinor)), "unit", "m"); // Fix case @@ -3361,7 +3361,7 @@ void PDS4Dataset::WriteArray(const CPLString &osPrefix, CPLXMLNode *psFAO, { CPLCreateXMLElementAndValue(psElementArray, (osPrefix + "scaling_factor").c_str(), - CPLSPrintf("%.18g", dfScale)); + CPLSPrintf("%.17g", dfScale)); } int bHasOffset = FALSE; @@ -3370,7 +3370,7 @@ void PDS4Dataset::WriteArray(const CPLString &osPrefix, CPLXMLNode *psFAO, { CPLCreateXMLElementAndValue(psElementArray, (osPrefix + "value_offset").c_str(), - CPLSPrintf("%.18g", dfOffset)); + CPLSPrintf("%.17g", dfOffset)); } // Axis definitions @@ -3443,7 +3443,7 @@ void PDS4Dataset::WriteArray(const CPLString &osPrefix, CPLXMLNode *psFAO, { CPLFree(psMC->psChild->pszValue); psMC->psChild->pszValue = - CPLStrdup(CPLSPrintf("%.18g", dfNoData)); + CPLStrdup(CPLSPrintf("%.17g", dfNoData)); } } else @@ -3453,7 +3453,7 @@ void PDS4Dataset::WriteArray(const CPLString &osPrefix, CPLXMLNode *psFAO, (osPrefix + "saturated_constant").c_str()); psMC = CPLCreateXMLElementAndValue( nullptr, (osPrefix + "missing_constant").c_str(), - CPLSPrintf("%.18g", dfNoData)); + CPLSPrintf("%.17g", dfNoData)); CPLXMLNode *psNext; if (psSaturatedConstant) { @@ -3475,7 +3475,7 @@ void PDS4Dataset::WriteArray(const CPLString &osPrefix, CPLXMLNode *psFAO, psArray, CXT_Element, (osPrefix + "Special_Constants").c_str()); CPLCreateXMLElementAndValue(psSC, (osPrefix + "missing_constant").c_str(), - CPLSPrintf("%.18g", dfNoData)); + CPLSPrintf("%.17g", dfNoData)); } } diff --git a/frmts/pds/pdsdataset.cpp b/frmts/pds/pdsdataset.cpp index 43c11261fcb8..709d3f395d74 100644 --- a/frmts/pds/pdsdataset.cpp +++ b/frmts/pds/pdsdataset.cpp @@ -592,8 +592,8 @@ void PDSDataset::ParseSRS() // acknowledged in // https://pds-imaging.jpl.nasa.gov/documentation/Cassini_BIDRSIS.PDF in // the middle of page 10 - oProj4String.Printf("+proj=ob_tran +o_proj=eqc +o_lon_p=%.18g " - "+o_lat_p=%.18g +lon_0=%.18g", + oProj4String.Printf("+proj=ob_tran +o_proj=eqc +o_lon_p=%.17g " + "+o_lat_p=%.17g +lon_0=%.17g", -poleRotation, 180 - poleLatitude, poleLongitude); oSRS.SetFromUserInput(oProj4String); } diff --git a/frmts/pds/vicardataset.cpp b/frmts/pds/vicardataset.cpp index c217753e79d0..26a51bdf7790 100644 --- a/frmts/pds/vicardataset.cpp +++ b/frmts/pds/vicardataset.cpp @@ -1382,7 +1382,7 @@ static void WriteLabelItemValue(std::string &osLabel, const CPLJSONObject &obj) else if (eType == CPLJSONObject::Type::Long) { std::string osVal( - CPLSPrintf("%.18g", static_cast(obj.ToLong()))); + CPLSPrintf("%.17g", static_cast(obj.ToLong()))); if (osVal.find('.') == std::string::npos) osVal += ".0"; osLabel += osVal; @@ -1394,7 +1394,7 @@ static void WriteLabelItemValue(std::string &osLabel, const CPLJSONObject &obj) dfVal <= static_cast(std::numeric_limits::max()) && static_cast(static_cast(dfVal)) == dfVal) { - std::string osVal(CPLSPrintf("%.18g", dfVal)); + std::string osVal(CPLSPrintf("%.17g", dfVal)); if (osVal.find('.') == std::string::npos) osVal += ".0"; osLabel += osVal; @@ -1966,7 +1966,7 @@ void VICARDataset::BuildLabelPropertyGeoTIFF(CPLJSONObject &oLabel) if (GDALGTIFKeyGetDOUBLE(hGTIF, gkey, &val, 0, 1)) { oGeoTIFF.Add(CPLString(GTIFKeyName(gkey)).toupper(), - CPLSPrintf("%.18g", val)); + CPLSPrintf("%.17g", val)); } } @@ -1999,7 +1999,7 @@ void VICARDataset::BuildLabelPropertyGeoTIFF(CPLJSONObject &oLabel) { if (i > 0) osVal += ','; - osVal += CPLSPrintf("%.18g", padfValues[i]); + osVal += CPLSPrintf("%.17g", padfValues[i]); } osVal += ')'; oGeoTIFF.Add(kv.second, osVal); diff --git a/frmts/raw/envidataset.cpp b/frmts/raw/envidataset.cpp index 26b924e3b19a..4dba3e5bc89f 100644 --- a/frmts/raw/envidataset.cpp +++ b/frmts/raw/envidataset.cpp @@ -341,7 +341,7 @@ CPLErr ENVIDataset::FlushCache(bool bAtClosing) if (bHasNoData) { bOK &= - VSIFPrintfL(fp, "data ignore value = %.18g\n", dfNoDataValue) >= 0; + VSIFPrintfL(fp, "data ignore value = %.17g\n", dfNoDataValue) >= 0; } // Write "data offset values", if needed @@ -363,7 +363,7 @@ CPLErr ENVIDataset::FlushCache(bool bAtClosing) double dfValue = GetRasterBand(i)->GetOffset(&bHasValue); if (!bHasValue) dfValue = 0; - bOK &= VSIFPrintfL(fp, "%.18g", dfValue) >= 0; + bOK &= VSIFPrintfL(fp, "%.17g", dfValue) >= 0; if (i != nBands) bOK &= VSIFPrintfL(fp, ", ") >= 0; } @@ -390,7 +390,7 @@ CPLErr ENVIDataset::FlushCache(bool bAtClosing) double dfValue = GetRasterBand(i)->GetScale(&bHasValue); if (!bHasValue) dfValue = 1; - bOK &= VSIFPrintfL(fp, "%.18g", dfValue) >= 0; + bOK &= VSIFPrintfL(fp, "%.17g", dfValue) >= 0; if (i != nBands) bOK &= VSIFPrintfL(fp, ", ") >= 0; } @@ -2838,8 +2838,8 @@ CPLErr ENVIRasterBand::SetNoDataValue(double dfNoDataValue) dfOtherBandNoData != dfNoDataValue) { CPLError(CE_Warning, CPLE_AppDefined, - "Nodata value of band %d (%.18g) is different from nodata " - "value from band %d (%.18g). Only the later will be " + "Nodata value of band %d (%.17g) is different from nodata " + "value from band %d (%.17g). Only the later will be " "written in the ENVI header as the \"data ignore value\"", nBand, dfNoDataValue, nOtherBand, dfOtherBandNoData); } diff --git a/frmts/raw/rrasterdataset.cpp b/frmts/raw/rrasterdataset.cpp index 778799aa857b..da0895f27b2d 100644 --- a/frmts/raw/rrasterdataset.cpp +++ b/frmts/raw/rrasterdataset.cpp @@ -548,7 +548,7 @@ void RRASTERDataset::RewriteHeader() int bGotNoDataValue = false; double dfNoDataValue = GetRasterBand(1)->GetNoDataValue(&bGotNoDataValue); if (bGotNoDataValue) - VSIFPrintfL(fp, "nodatavalue=%.18g\n", dfNoDataValue); + VSIFPrintfL(fp, "nodatavalue=%.17g\n", dfNoDataValue); #if CPL_IS_LSB VSIFPrintfL(fp, "byteorder=%s\n", m_bNativeOrder ? "little" : "big"); @@ -573,8 +573,8 @@ void RRASTERDataset::RewriteHeader() osMinValue.clear(); break; } - osMinValue += CPLSPrintf("%.18g", poBand->m_dfMin); - osMaxValue += CPLSPrintf("%.18g", poBand->m_dfMax); + osMinValue += CPLSPrintf("%.17g", poBand->m_dfMin); + osMaxValue += CPLSPrintf("%.17g", poBand->m_dfMax); } if (!osMinValue.empty()) { @@ -636,7 +636,7 @@ void RRASTERDataset::RewriteHeader() else if (eColType == GFT_Real) { osRatValues += - CPLSPrintf("%.18g", poRAT->GetValueAsDouble(j, i)); + CPLSPrintf("%.17g", poRAT->GetValueAsDouble(j, i)); } else { @@ -769,12 +769,12 @@ void RRASTERDataset::RewriteHeader() VSIFPrintfL(fp, "nrows=%d\n", nRasterYSize); VSIFPrintfL(fp, "ncols=%d\n", nRasterXSize); - VSIFPrintfL(fp, "xmin=%.18g\n", m_adfGeoTransform[0]); - VSIFPrintfL(fp, "ymin=%.18g\n", + VSIFPrintfL(fp, "xmin=%.17g\n", m_adfGeoTransform[0]); + VSIFPrintfL(fp, "ymin=%.17g\n", m_adfGeoTransform[3] + nRasterYSize * m_adfGeoTransform[5]); - VSIFPrintfL(fp, "xmax=%.18g\n", + VSIFPrintfL(fp, "xmax=%.17g\n", m_adfGeoTransform[0] + nRasterXSize * m_adfGeoTransform[1]); - VSIFPrintfL(fp, "ymax=%.18g\n", m_adfGeoTransform[3]); + VSIFPrintfL(fp, "ymax=%.17g\n", m_adfGeoTransform[3]); if (!m_oSRS.IsEmpty()) { diff --git a/frmts/stacta/stactadataset.cpp b/frmts/stacta/stactadataset.cpp index 5e9982d0c677..55c4cdfc47e9 100644 --- a/frmts/stacta/stactadataset.cpp +++ b/frmts/stacta/stactadataset.cpp @@ -1170,10 +1170,10 @@ bool STACTADataset::Open(GDALOpenInfo *poOpenInfo) aosOptions.AddString("-of"); aosOptions.AddString("VRT"); aosOptions.AddString("-projwin"); - aosOptions.AddString(CPLSPrintf("%.18g", dfMinX)); - aosOptions.AddString(CPLSPrintf("%.18g", dfMaxY)); - aosOptions.AddString(CPLSPrintf("%.18g", dfMaxX)); - aosOptions.AddString(CPLSPrintf("%.18g", dfMinY)); + aosOptions.AddString(CPLSPrintf("%.17g", dfMinX)); + aosOptions.AddString(CPLSPrintf("%.17g", dfMaxY)); + aosOptions.AddString(CPLSPrintf("%.17g", dfMaxX)); + aosOptions.AddString(CPLSPrintf("%.17g", dfMinY)); auto psOptions = GDALTranslateOptionsNew(aosOptions.List(), nullptr); auto hDS = diff --git a/frmts/tiledb/tiledbmultidimarray.cpp b/frmts/tiledb/tiledbmultidimarray.cpp index 2d3d5f6ab847..31513a95466c 100644 --- a/frmts/tiledb/tiledbmultidimarray.cpp +++ b/frmts/tiledb/tiledbmultidimarray.cpp @@ -741,7 +741,7 @@ std::shared_ptr TileDBArray::OpenFromDisk( { if (!osVal.empty()) osVal += ','; - osVal += CPLSPrintf("%.18g", dfVal); + osVal += CPLSPrintf("%.17g", dfVal); } aosGridMappingKeyValues.AddNameValue(osKey.c_str(), osVal.c_str()); diff --git a/frmts/vrt/gdaltileindexdataset.cpp b/frmts/vrt/gdaltileindexdataset.cpp index b33ea497a488..fffab35fb8ef 100644 --- a/frmts/vrt/gdaltileindexdataset.cpp +++ b/frmts/vrt/gdaltileindexdataset.cpp @@ -2264,7 +2264,7 @@ void GDALTileIndexDataset::LoadOverviews() if (dfFactor != 0) { aosNewOpenOptions.SetNameValue("@FACTOR", - CPLSPrintf("%.18g", dfFactor)); + CPLSPrintf("%.17g", dfFactor)); } if (!osLyrName.empty()) { @@ -3093,14 +3093,14 @@ bool GDALTileIndexDataset::GetSourceDesc(const std::string &osTileName, dfVRTResYAbs; aosOptions.AddString("-te"); - aosOptions.AddString(CPLSPrintf("%.18g", dfWarpMinX)); - aosOptions.AddString(CPLSPrintf("%.18g", dfWarpMinY)); - aosOptions.AddString(CPLSPrintf("%.18g", dfWarpMaxX)); - aosOptions.AddString(CPLSPrintf("%.18g", dfWarpMaxY)); + aosOptions.AddString(CPLSPrintf("%.17g", dfWarpMinX)); + aosOptions.AddString(CPLSPrintf("%.17g", dfWarpMinY)); + aosOptions.AddString(CPLSPrintf("%.17g", dfWarpMaxX)); + aosOptions.AddString(CPLSPrintf("%.17g", dfWarpMaxY)); aosOptions.AddString("-tr"); - aosOptions.AddString(CPLSPrintf("%.18g", dfVRTResX)); - aosOptions.AddString(CPLSPrintf("%.18g", dfVRTResYAbs)); + aosOptions.AddString(CPLSPrintf("%.17g", dfVRTResX)); + aosOptions.AddString(CPLSPrintf("%.17g", dfVRTResYAbs)); aosOptions.AddString("-dstalpha"); diff --git a/frmts/vrt/vrtderivedrasterband.cpp b/frmts/vrt/vrtderivedrasterband.cpp index 879e610dafb0..4db83d4bc31e 100644 --- a/frmts/vrt/vrtderivedrasterband.cpp +++ b/frmts/vrt/vrtderivedrasterband.cpp @@ -828,10 +828,10 @@ CPLErr VRTDerivedRasterBand::GetPixelFunctionArguments( } oAdditionalArgs.push_back(std::pair( - osValue, CPLSPrintf("%.18g", dfVal))); + osValue, CPLSPrintf("%.17g", dfVal))); CPLDebug("VRT", "Added builtin pixel function argument %s = %s", - osValue.c_str(), CPLSPrintf("%.18g", dfVal)); + osValue.c_str(), CPLSPrintf("%.17g", dfVal)); } } } diff --git a/frmts/vrt/vrtmultidim.cpp b/frmts/vrt/vrtmultidim.cpp index a30912690153..214485ba67b2 100644 --- a/frmts/vrt/vrtmultidim.cpp +++ b/frmts/vrt/vrtmultidim.cpp @@ -1172,9 +1172,9 @@ void VRTMDArraySourceRegularlySpaced::Serialize(CPLXMLNode *psParent, CPLXMLNode *psSource = CPLCreateXMLNode(psParent, CXT_Element, "RegularlySpacedValues"); CPLAddXMLAttributeAndValue(psSource, "start", - CPLSPrintf("%.18g", m_dfStart)); + CPLSPrintf("%.17g", m_dfStart)); CPLAddXMLAttributeAndValue(psSource, "increment", - CPLSPrintf("%.18g", m_dfIncrement)); + CPLSPrintf("%.17g", m_dfIncrement)); } /************************************************************************/ @@ -2566,13 +2566,13 @@ void VRTMDArray::Serialize(CPLXMLNode *psParent, const char *pszVRTPath) const if (m_bHasOffset) { CPLCreateXMLElementAndValue(psArray, "Offset", - CPLSPrintf("%.18g", m_dfOffset)); + CPLSPrintf("%.17g", m_dfOffset)); } if (m_bHasScale) { CPLCreateXMLElementAndValue(psArray, "Scale", - CPLSPrintf("%.18g", m_dfScale)); + CPLSPrintf("%.17g", m_dfScale)); } for (const auto &poSource : m_sources) diff --git a/frmts/vrt/vrtprocesseddataset.cpp b/frmts/vrt/vrtprocesseddataset.cpp index 8a3fa27a0258..168effa405a5 100644 --- a/frmts/vrt/vrtprocesseddataset.cpp +++ b/frmts/vrt/vrtprocesseddataset.cpp @@ -573,7 +573,7 @@ bool VRTProcessedDataset::ParseStep(const CPLXMLNode *psStep, bool bIsFinalStep, if (bHasVal) { oStep.aosArguments.AddNameValue("nodata", - CPLSPrintf("%.18g", dfVal)); + CPLSPrintf("%.17g", dfVal)); } } @@ -586,7 +586,7 @@ bool VRTProcessedDataset::ParseStep(const CPLXMLNode *psStep, bool bIsFinalStep, const double dfVal = GetRasterBand(i)->GetOffset(&bHasVal); oStep.aosArguments.AddNameValue( CPLSPrintf("offset_%d", i), - CPLSPrintf("%.18g", bHasVal ? dfVal : 0.0)); + CPLSPrintf("%.17g", bHasVal ? dfVal : 0.0)); } } @@ -599,7 +599,7 @@ bool VRTProcessedDataset::ParseStep(const CPLXMLNode *psStep, bool bIsFinalStep, const double dfVal = GetRasterBand(i)->GetScale(&bHasVal); oStep.aosArguments.AddNameValue( CPLSPrintf("scale_%d", i), - CPLSPrintf("%.18g", bHasVal ? dfVal : 1.0)); + CPLSPrintf("%.17g", bHasVal ? dfVal : 1.0)); } } diff --git a/frmts/vrt/vrtsources.cpp b/frmts/vrt/vrtsources.cpp index 80604ec5e42e..fe8bbb30af92 100644 --- a/frmts/vrt/vrtsources.cpp +++ b/frmts/vrt/vrtsources.cpp @@ -2105,7 +2105,7 @@ CPLXMLNode *VRTNoDataFromMaskSource::SerializeToXML(const char *pszVRTPath) if (m_bNoDataSet) { CPLSetXMLValue(psSrc, "MaskValueThreshold", - CPLSPrintf("%.18g", m_dfMaskValueThreshold)); + CPLSPrintf("%.17g", m_dfMaskValueThreshold)); GDALDataType eBandDT = GDT_Unknown; double dfNoDataValue = m_dfNoDataValue; @@ -2131,7 +2131,7 @@ CPLXMLNode *VRTNoDataFromMaskSource::SerializeToXML(const char *pszVRTPath) if (m_bHasRemappedValue) { CPLSetXMLValue(psSrc, "RemappedValue", - CPLSPrintf("%.18g", m_dfRemappedValue)); + CPLSPrintf("%.17g", m_dfRemappedValue)); } return psSrc; @@ -2647,7 +2647,7 @@ CPLXMLNode *VRTComplexSource::SerializeToXML(const char *pszVRTPath) CPLString().Printf("%g", m_adfLUTInputs[0]) == CPLString().Printf("%g", m_adfLUTInputs[1])) { - osLUT = CPLString().Printf("%.18g:%g", m_adfLUTInputs[0], + osLUT = CPLString().Printf("%.17g:%g", m_adfLUTInputs[0], m_adfLUTOutputs[0]); } else @@ -2666,7 +2666,7 @@ CPLXMLNode *VRTComplexSource::SerializeToXML(const char *pszVRTPath) // TODO(schwehr): An explanation of the 18 would be helpful. // Can someone distill the issue down to a quick comment? // https://trac.osgeo.org/gdal/ticket/6422 - osLUT += CPLString().Printf(",%.18g:%g", m_adfLUTInputs[i], + osLUT += CPLString().Printf(",%.17g:%g", m_adfLUTInputs[i], m_adfLUTOutputs[i]); } else diff --git a/frmts/wms/minidriver_ogcapicoverage.cpp b/frmts/wms/minidriver_ogcapicoverage.cpp index 0f54d8299d05..070550b3777b 100644 --- a/frmts/wms/minidriver_ogcapicoverage.cpp +++ b/frmts/wms/minidriver_ogcapicoverage.cpp @@ -61,16 +61,16 @@ CPLErr WMSMiniDriver_OGCAPICoverage::TiledImageRequest( URLSearchAndReplace(&url, "${width}", "%d", iri.m_sx); URLSearchAndReplace(&url, "${height}", "%d", iri.m_sy); - URLSearchAndReplace(&url, "${minx}", "%.18g", iri.m_x0); - URLSearchAndReplace(&url, "${miny}", "%.18g", iri.m_y1); - URLSearchAndReplace(&url, "${maxx}", "%.18g", iri.m_x1); - URLSearchAndReplace(&url, "${maxy}", "%.18g", iri.m_y0); - /*URLSearchAndReplace(&url, "${minx_centerpixel}", "%.18g", iri.m_x0 + 0.5 * + URLSearchAndReplace(&url, "${minx}", "%.17g", iri.m_x0); + URLSearchAndReplace(&url, "${miny}", "%.17g", iri.m_y1); + URLSearchAndReplace(&url, "${maxx}", "%.17g", iri.m_x1); + URLSearchAndReplace(&url, "${maxy}", "%.17g", iri.m_y0); + /*URLSearchAndReplace(&url, "${minx_centerpixel}", "%.17g", iri.m_x0 + 0.5 * (iri.m_x1 - iri.m_x0) / iri.m_sx); URLSearchAndReplace(&url, - "${miny_centerpixel}", "%.18g", iri.m_y1 - 0.5 * (iri.m_y1 - iri.m_y0) / - iri.m_sy); URLSearchAndReplace(&url, "${maxx_centerpixel}", "%.18g", + "${miny_centerpixel}", "%.17g", iri.m_y1 - 0.5 * (iri.m_y1 - iri.m_y0) / + iri.m_sy); URLSearchAndReplace(&url, "${maxx_centerpixel}", "%.17g", iri.m_x1 - 0.5 * (iri.m_x1 - iri.m_x0) / iri.m_sx); - URLSearchAndReplace(&url, "${maxy_centerpixel}", "%.18g", iri.m_y0 + 0.5 * + URLSearchAndReplace(&url, "${maxy_centerpixel}", "%.17g", iri.m_y0 + 0.5 * (iri.m_y1 - iri.m_y0) / iri.m_sy);*/ return CE_None; diff --git a/frmts/wms/minidriver_ogcapimaps.cpp b/frmts/wms/minidriver_ogcapimaps.cpp index 02710be25b5d..4b45618e307b 100644 --- a/frmts/wms/minidriver_ogcapimaps.cpp +++ b/frmts/wms/minidriver_ogcapimaps.cpp @@ -60,7 +60,7 @@ CPLErr WMSMiniDriver_OGCAPIMaps::TiledImageRequest( URLPrepare(url); url += - CPLOPrintf("width=%d&height=%d&bbox=%.18g,%.18g,%.18g,%.18g", iri.m_sx, + CPLOPrintf("width=%d&height=%d&bbox=%.17g,%.17g,%.17g,%.17g", iri.m_sx, iri.m_sy, iri.m_x0, iri.m_y1, iri.m_x1, iri.m_y0); return CE_None; diff --git a/frmts/xyz/xyzdataset.cpp b/frmts/xyz/xyzdataset.cpp index 46ff26c092b6..158d313892b8 100644 --- a/frmts/xyz/xyzdataset.cpp +++ b/frmts/xyz/xyzdataset.cpp @@ -1677,9 +1677,9 @@ GDALDataset *XYZDataset::CreateCopy(const char *pszFilename, /* -------------------------------------------------------------------- */ char szFormat[50] = {'\0'}; if (eReqDT == GDT_Int32) - strcpy(szFormat, "%.18g%c%.18g%c%d\n"); + strcpy(szFormat, "%.17g%c%.17g%c%d\n"); else - strcpy(szFormat, "%.18g%c%.18g%c%.18g\n"); + strcpy(szFormat, "%.17g%c%.17g%c%.17g\n"); const char *pszDecimalPrecision = CSLFetchNameValue(papszOptions, "DECIMAL_PRECISION"); const char *pszSignificantDigits = diff --git a/frmts/zarr/zarr_array.cpp b/frmts/zarr/zarr_array.cpp index afb2da159046..bf670c397ad4 100644 --- a/frmts/zarr/zarr_array.cpp +++ b/frmts/zarr/zarr_array.cpp @@ -2778,7 +2778,7 @@ void ZarrArray::ParseSpecialAttributes( { if (!osVal.empty()) osVal += ','; - osVal += CPLSPrintf("%.18g", val); + osVal += CPLSPrintf("%.17g", val); } aosKeyValues.SetNameValue(poAttr->GetName().c_str(), osVal.c_str()); diff --git a/gcore/gdalmultidim.cpp b/gcore/gdalmultidim.cpp index 6d3d550bf2c1..15ff34e03ce2 100644 --- a/gcore/gdalmultidim.cpp +++ b/gcore/gdalmultidim.cpp @@ -1693,7 +1693,7 @@ bool GDALExtendedDataType::CopyValue(const void *pSrc, str = CPLSPrintf("%.9g", *static_cast(pSrc)); break; case GDT_Float64: - str = CPLSPrintf("%.18g", *static_cast(pSrc)); + str = CPLSPrintf("%.17g", *static_cast(pSrc)); break; case GDT_CInt16: { @@ -1716,7 +1716,7 @@ bool GDALExtendedDataType::CopyValue(const void *pSrc, case GDT_CFloat64: { const double *src = static_cast(pSrc); - str = CPLSPrintf("%.18g+%.18gj", src[0], src[1]); + str = CPLSPrintf("%.17g+%.17gj", src[0], src[1]); break; } case GDT_TypeCount: @@ -8255,10 +8255,10 @@ std::shared_ptr GDALMDArrayResampled::Create( const double dfYMin = dfYMax + dfYSpacing * static_cast(poNewDimY->GetSize()); aosArgv.AddString("-te"); - aosArgv.AddString(CPLSPrintf("%.18g", dfXMin)); - aosArgv.AddString(CPLSPrintf("%.18g", dfYMin)); - aosArgv.AddString(CPLSPrintf("%.18g", dfXMax)); - aosArgv.AddString(CPLSPrintf("%.18g", dfYMax)); + aosArgv.AddString(CPLSPrintf("%.17g", dfXMin)); + aosArgv.AddString(CPLSPrintf("%.17g", dfYMin)); + aosArgv.AddString(CPLSPrintf("%.17g", dfXMax)); + aosArgv.AddString(CPLSPrintf("%.17g", dfYMax)); } if (poNewDimX && poNewDimY) @@ -14045,15 +14045,15 @@ void GDALPamMultiDim::Save() : "0"); CPLCreateXMLElementAndValue( psMDArray, "Minimum", - CPLSPrintf("%.18g", kv.second.stats.dfMin)); + CPLSPrintf("%.17g", kv.second.stats.dfMin)); CPLCreateXMLElementAndValue( psMDArray, "Maximum", - CPLSPrintf("%.18g", kv.second.stats.dfMax)); + CPLSPrintf("%.17g", kv.second.stats.dfMax)); CPLCreateXMLElementAndValue( - psMDArray, "Mean", CPLSPrintf("%.18g", kv.second.stats.dfMean)); + psMDArray, "Mean", CPLSPrintf("%.17g", kv.second.stats.dfMean)); CPLCreateXMLElementAndValue( psMDArray, "StdDev", - CPLSPrintf("%.18g", kv.second.stats.dfStdDev)); + CPLSPrintf("%.17g", kv.second.stats.dfStdDev)); CPLCreateXMLElementAndValue( psMDArray, "ValidSampleCount", CPLSPrintf(CPL_FRMT_GUIB, kv.second.stats.nValidCount)); diff --git a/gcore/gdaloverviewdataset.cpp b/gcore/gdaloverviewdataset.cpp index 16b8b8927666..f528f531dba5 100644 --- a/gcore/gdaloverviewdataset.cpp +++ b/gcore/gdaloverviewdataset.cpp @@ -459,9 +459,9 @@ void GDALOverviewDataset::Rescale(char **&papszMD, const char *pszItem, double dfRatio, double dfDefaultVal) { double dfVal = CPLAtofM(CSLFetchNameValueDef( - papszMD, pszItem, CPLSPrintf("%.18g", dfDefaultVal))); + papszMD, pszItem, CPLSPrintf("%.17g", dfDefaultVal))); dfVal *= dfRatio; - papszMD = CSLSetNameValue(papszMD, pszItem, CPLSPrintf("%.18g", dfVal)); + papszMD = CSLSetNameValue(papszMD, pszItem, CPLSPrintf("%.17g", dfVal)); } /************************************************************************/ diff --git a/ogr/ogr_srs_cf1.cpp b/ogr/ogr_srs_cf1.cpp index 4572a9606a37..d4d3b7e7e7de 100644 --- a/ogr/ogr_srs_cf1.cpp +++ b/ogr/ogr_srs_cf1.cpp @@ -1694,7 +1694,7 @@ OGRSpatialReference::exportToCF1(char **ppszGridMappingName, { if (!osVal.empty()) osVal += ','; - osVal += CPLSPrintf("%.18g", dfVal); + osVal += CPLSPrintf("%.17g", dfVal); } aosKeyValues.AddNameValue(param.key.c_str(), osVal.c_str()); } diff --git a/ogr/ogrct.cpp b/ogr/ogrct.cpp index 879061cdf18e..49b83af8b096 100644 --- a/ogr/ogrct.cpp +++ b/ogr/ogrct.cpp @@ -1684,7 +1684,7 @@ int OGRProjCT::Initialize(const OGRSpatialReference *poSourceIn, CPLStringList aosOptions; if (options.d->dfAccuracy >= 0) aosOptions.SetNameValue( - "ACCURACY", CPLSPrintf("%.18g", options.d->dfAccuracy)); + "ACCURACY", CPLSPrintf("%.17g", options.d->dfAccuracy)); if (!options.d->bAllowBallpark) aosOptions.SetNameValue("ALLOW_BALLPARK", "NO"); #if PROJ_VERSION_MAJOR > 9 || \ diff --git a/ogr/ogrsf_frmts/amigocloud/ogramigocloudtablelayer.cpp b/ogr/ogrsf_frmts/amigocloud/ogramigocloudtablelayer.cpp index 65bedfb725c7..5dc99fe45604 100644 --- a/ogr/ogrsf_frmts/amigocloud/ogramigocloudtablelayer.cpp +++ b/ogr/ogrsf_frmts/amigocloud/ogramigocloudtablelayer.cpp @@ -780,11 +780,11 @@ void OGRAmigoCloudTableLayer::BuildWhere() char szBox3D_2[128]; char *pszComma = nullptr; - CPLsnprintf(szBox3D_1, sizeof(szBox3D_1), "%.18g %.18g", sEnvelope.MinX, + CPLsnprintf(szBox3D_1, sizeof(szBox3D_1), "%.17g %.17g", sEnvelope.MinX, sEnvelope.MinY); while ((pszComma = strchr(szBox3D_1, ',')) != nullptr) *pszComma = '.'; - CPLsnprintf(szBox3D_2, sizeof(szBox3D_2), "%.18g %.18g", sEnvelope.MaxX, + CPLsnprintf(szBox3D_2, sizeof(szBox3D_2), "%.17g %.17g", sEnvelope.MaxX, sEnvelope.MaxY); while ((pszComma = strchr(szBox3D_2, ',')) != nullptr) *pszComma = '.'; diff --git a/ogr/ogrsf_frmts/carto/ogrcartotablelayer.cpp b/ogr/ogrsf_frmts/carto/ogrcartotablelayer.cpp index 695632dcd17c..460073385666 100644 --- a/ogr/ogrsf_frmts/carto/ogrcartotablelayer.cpp +++ b/ogr/ogrsf_frmts/carto/ogrcartotablelayer.cpp @@ -1634,11 +1634,11 @@ void OGRCARTOTableLayer::BuildWhere() char szBox3D_2[128]; char *pszComma; - CPLsnprintf(szBox3D_1, sizeof(szBox3D_1), "%.18g %.18g", sEnvelope.MinX, + CPLsnprintf(szBox3D_1, sizeof(szBox3D_1), "%.17g %.17g", sEnvelope.MinX, sEnvelope.MinY); while ((pszComma = strchr(szBox3D_1, ',')) != nullptr) *pszComma = '.'; - CPLsnprintf(szBox3D_2, sizeof(szBox3D_2), "%.18g %.18g", sEnvelope.MaxX, + CPLsnprintf(szBox3D_2, sizeof(szBox3D_2), "%.17g %.17g", sEnvelope.MaxX, sEnvelope.MaxY); while ((pszComma = strchr(szBox3D_2, ',')) != nullptr) *pszComma = '.'; diff --git a/ogr/ogrsf_frmts/generic/ogr_gensql.cpp b/ogr/ogrsf_frmts/generic/ogr_gensql.cpp index 3b2e7af7b269..ec1072ec1f3f 100644 --- a/ogr/ogrsf_frmts/generic/ogr_gensql.cpp +++ b/ogr/ogrsf_frmts/generic/ogr_gensql.cpp @@ -1324,7 +1324,7 @@ static CPLString GetFilterForJoin(swq_expr_node *poExpr, OGRFeature *poSrcFeat, break; case SWQ_FLOAT: return CPLString().Printf( - "%.18g", + "%.17g", poSrcFeat->GetFieldAsDouble(poExpr->field_index)); break; default: @@ -1359,7 +1359,7 @@ static CPLString GetFilterForJoin(swq_expr_node *poExpr, OGRFeature *poSrcFeat, break; case OFTReal: - return CPLString().Printf("%.18g", psSrcField->Real); + return CPLString().Printf("%.17g", psSrcField->Real); break; case OFTString: diff --git a/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp b/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp index b1d1fdedf13d..60efa05ba58f 100644 --- a/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp +++ b/ogr/ogrsf_frmts/geojson/ogrgeojsonwriter.cpp @@ -1630,7 +1630,7 @@ static int OGR_json_double_with_precision_to_string(struct json_object *jso, const double dfVal = json_object_get_double(jso); if (fabs(dfVal) > 1e50 && !CPLIsInf(dfVal)) { - CPLsnprintf(szBuffer, sizeof(szBuffer), "%.18g", dfVal); + CPLsnprintf(szBuffer, sizeof(szBuffer), "%.17g", dfVal); } else { diff --git a/ogr/ogrsf_frmts/gpkg/gdalgeopackagerasterband.cpp b/ogr/ogrsf_frmts/gpkg/gdalgeopackagerasterband.cpp index c11cca9f82ca..3e8065cdd6bd 100644 --- a/ogr/ogrsf_frmts/gpkg/gdalgeopackagerasterband.cpp +++ b/ogr/ogrsf_frmts/gpkg/gdalgeopackagerasterband.cpp @@ -2471,7 +2471,7 @@ CPLErr GDALGPKGMBTilesLikePseudoDataset::WriteTileInternal() "INSERT INTO gpkg_2d_gridded_tile_ancillary " "(tpudt_name, tpudt_id, scale, offset, min, max, " "mean, std_dev) VALUES " - "('%q', ?, %.18g, %.18g, ?, ?, ?, ?)", + "('%q', ?, %.17g, %.17g, ?, ?, ?, ?)", m_osRasterTable.c_str(), dfTileScale, dfTileOffset); #ifdef DEBUG_VERBOSE CPLDebug("GPKG", "%s", pszSQL); @@ -3713,7 +3713,7 @@ CPLErr GDALGeoPackageRasterBand::SetNoDataValue(double dfNoDataValue) static_cast(dfNoDataValue) == dfNoDataValue)) { CPLError(CE_Failure, CPLE_NotSupported, - "Invalid nodata value for a Byte band: %.18g", + "Invalid nodata value for a Byte band: %.17g", dfNoDataValue); return CE_Failure; } diff --git a/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp b/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp index 3793e2ea5bb9..8238f113f29a 100644 --- a/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp +++ b/ogr/ogrsf_frmts/gpkg/ogrgeopackagedatasource.cpp @@ -729,7 +729,7 @@ int GDALGeoPackageDataset::GetSrsId(const OGRSpatialReference *poSRSIn) if (poSRSIn->GetCoordinateEpoch() > 0 && m_bHasEpochColumn) { osEpochTest = - CPLSPrintf(" AND epoch = %.18g", poSRSIn->GetCoordinateEpoch()); + CPLSPrintf(" AND epoch = %.17g", poSRSIn->GetCoordinateEpoch()); } if (!(poSRS->IsGeographic() && poSRS->GetAxesCount() == 3)) @@ -927,7 +927,7 @@ int GDALGeoPackageDataset::GetSrsId(const OGRSpatialReference *poSRSIn) if (poSRSIn->GetCoordinateEpoch() > 0) { osEpochColumn = ", epoch"; - osEpochVal = CPLSPrintf(", %.18g", poSRSIn->GetCoordinateEpoch()); + osEpochVal = CPLSPrintf(", %.17g", poSRSIn->GetCoordinateEpoch()); } // Add new SRS row to gpkg_spatial_ref_sys. @@ -2987,16 +2987,16 @@ bool GDALGeoPackageDataset::OpenRaster( const int nTileWidth = atoi(oResult->GetValue(3, 0)); const int nTileHeight = atoi(oResult->GetValue(4, 0)); osContentsMinX = - CPLSPrintf("%.18g", dfMinX + dfPixelXSize * nTileWidth * + CPLSPrintf("%.17g", dfMinX + dfPixelXSize * nTileWidth * atoi(oResult2->GetValue(0, 0))); osContentsMaxY = - CPLSPrintf("%.18g", dfMaxY - dfPixelYSize * nTileHeight * + CPLSPrintf("%.17g", dfMaxY - dfPixelYSize * nTileHeight * atoi(oResult2->GetValue(1, 0))); osContentsMaxX = CPLSPrintf( - "%.18g", dfMinX + dfPixelXSize * nTileWidth * + "%.17g", dfMinX + dfPixelXSize * nTileWidth * (1 + atoi(oResult2->GetValue(2, 0)))); osContentsMinY = CPLSPrintf( - "%.18g", dfMaxY - dfPixelYSize * nTileHeight * + "%.17g", dfMaxY - dfPixelYSize * nTileHeight * (1 + atoi(oResult2->GetValue(3, 0)))); pszContentsMinX = osContentsMinX.c_str(); pszContentsMinY = osContentsMinY.c_str(); @@ -3022,7 +3022,7 @@ bool GDALGeoPackageDataset::OpenRaster( static_cast(dfGPKGNoDataValue) != dfGPKGNoDataValue) { CPLError(CE_Warning, CPLE_AppDefined, - "data_null = %.18g is invalid for integer data_type", + "data_null = %.17g is invalid for integer data_type", dfGPKGNoDataValue); } else @@ -3368,7 +3368,7 @@ CPLErr GDALGeoPackageDataset::FinalizeRasterRegistration() "INSERT INTO gpkg_contents " "(table_name,data_type,identifier,description,min_x,min_y,max_x,max_y," "last_change,srs_id) VALUES " - "('%q','%q','%q','%q',%.18g,%.18g,%.18g,%.18g,"); + "('%q','%q','%q','%q',%.17g,%.17g,%.17g,%.17g,"); osInsertGpkgContentsFormatting += (pszCurrentDate) ? "'%q'" : "%s"; osInsertGpkgContentsFormatting += ",%d)"; char *pszSQL = sqlite3_mprintf( @@ -3396,7 +3396,7 @@ CPLErr GDALGeoPackageDataset::FinalizeRasterRegistration() pszSQL = sqlite3_mprintf("INSERT INTO gpkg_tile_matrix_set " "(table_name,srs_id,min_x,min_y,max_x,max_y) VALUES " - "('%q',%d,%.18g,%.18g,%.18g,%.18g)", + "('%q',%d,%.17g,%.17g,%.17g,%.17g)", m_osRasterTable.c_str(), m_nSRID, m_dfTMSMinX, dfTMSMinY, dfTMSMaxX, m_dfTMSMaxY); eErr = SQLCommand(hDB, pszSQL); @@ -3435,7 +3435,7 @@ CPLErr GDALGeoPackageDataset::FinalizeRasterRegistration() "INSERT INTO gpkg_tile_matrix " "(table_name,zoom_level,matrix_width,matrix_height,tile_width,tile_" "height,pixel_x_size,pixel_y_size) VALUES " - "('%q',%d,%d,%d,%d,%d,%.18g,%.18g)", + "('%q',%d,%d,%d,%d,%d,%.17g,%.17g)", m_osRasterTable.c_str(), i, nTileMatrixWidth, nTileMatrixHeight, nTileWidth, nTileHeight, dfPixelXSizeZoomLevel, dfPixelYSizeZoomLevel); @@ -3828,7 +3828,7 @@ CPLErr GDALGeoPackageDataset::IBuildOverviews( "INSERT INTO gpkg_tile_matrix " "(table_name,zoom_level,matrix_width,matrix_height,tile_" "width,tile_height,pixel_x_size,pixel_y_size) VALUES " - "('%q',%d,%d,%d,%d,%d,%.18g,%.18g)", + "('%q',%d,%d,%d,%d,%d,%.17g,%.17g)", m_osRasterTable.c_str(), nNewZoomLevel, nTileMatrixWidth, nTileMatrixHeight, nTileWidth, nTileHeight, dfPixelXSizeZoomLevel, dfPixelYSizeZoomLevel); @@ -4917,7 +4917,7 @@ void GDALGeoPackageDataset::FlushMetadata() if (bHasNoData) { oLocalMDMD.SetMetadataItem("NODATA_VALUE", - CPLSPrintf("%.18g", dfNoDataValue), + CPLSPrintf("%.17g", dfNoDataValue), "IMAGE_STRUCTURE"); } } @@ -5915,7 +5915,7 @@ bool GDALGeoPackageDataset::CreateTileGriddedTable(char **papszOptions) "INSERT INTO gpkg_2d_gridded_coverage_ancillary " "(tile_matrix_set_name, datatype, scale, offset, precision, " "grid_cell_encoding, uom, field_name, quantity_definition) " - "VALUES (%Q, '%s', %.18g, %.18g, %.18g, %Q, %Q, %Q, %Q)", + "VALUES (%Q, '%s', %.17g, %.17g, %.17g, %Q, %Q, %Q, %Q)", m_osRasterTable.c_str(), (m_eTF == GPKG_TF_PNG_16BIT) ? "integer" : "float", m_dfScale, m_dfOffset, m_dfPrecision, osGridCellEncoding.c_str(), @@ -6138,13 +6138,13 @@ GDALDataset *GDALGeoPackageDataset::CreateCopy(const char *pszFilename, aosOptions.AddString("VRT"); aosOptions.AddString("-projwin"); aosOptions.AddString( - CPLSPrintf("%.18g", adfSrcGeoTransform[0])); - aosOptions.AddString(CPLSPrintf("%.18g", maxLat)); + CPLSPrintf("%.17g", adfSrcGeoTransform[0])); + aosOptions.AddString(CPLSPrintf("%.17g", maxLat)); aosOptions.AddString( - CPLSPrintf("%.18g", adfSrcGeoTransform[0] + + CPLSPrintf("%.17g", adfSrcGeoTransform[0] + poSrcDS->GetRasterXSize() * adfSrcGeoTransform[1])); - aosOptions.AddString(CPLSPrintf("%.18g", minLat)); + aosOptions.AddString(CPLSPrintf("%.17g", minLat)); auto psOptions = GDALTranslateOptionsNew(aosOptions.List(), nullptr); poTmpDS.reset(GDALDataset::FromHandle(GDALTranslate( diff --git a/ogr/ogrsf_frmts/gpkg/ogrgeopackagetablelayer.cpp b/ogr/ogrsf_frmts/gpkg/ogrgeopackagetablelayer.cpp index 5383eb2e758d..7dbe7174aebd 100644 --- a/ogr/ogrsf_frmts/gpkg/ogrgeopackagetablelayer.cpp +++ b/ogr/ogrsf_frmts/gpkg/ogrgeopackagetablelayer.cpp @@ -67,8 +67,8 @@ OGRErr OGRGeoPackageTableLayer::SaveExtent() char *pszSQL = sqlite3_mprintf("UPDATE gpkg_contents SET " - "min_x = %.18g, min_y = %.18g, " - "max_x = %.18g, max_y = %.18g " + "min_x = %.17g, min_y = %.17g, " + "max_x = %.17g, max_y = %.17g " "WHERE lower(table_name) = lower('%q') AND " "Lower(data_type) = 'features'", m_poExtent->MinX, m_poExtent->MinY, m_poExtent->MaxX, diff --git a/ogr/ogrsf_frmts/hana/ogrhanalayer.cpp b/ogr/ogrsf_frmts/hana/ogrhanalayer.cpp index 27541403796a..ee6a9be46098 100644 --- a/ogr/ogrsf_frmts/hana/ogrhanalayer.cpp +++ b/ogr/ogrsf_frmts/hana/ogrhanalayer.cpp @@ -97,13 +97,13 @@ CPLString BuildSpatialFilter(int dbVersion, const OGRGeometry &geom, // flag. if (dbVersion == 1) return CPLString().Printf( - "\"%s\".ST_IntersectsRect(ST_GeomFromText('POINT(%.18g %.18g)', " - "%d), ST_GeomFromText('POINT(%.18g %.18g)', %d)) = 1", + "\"%s\".ST_IntersectsRect(ST_GeomFromText('POINT(%.17g %.17g)', " + "%d), ST_GeomFromText('POINT(%.17g %.17g)', %d)) = 1", clmName.c_str(), minX, minY, srid, maxX, maxY, srid); else return CPLString().Printf( - "\"%s\".ST_IntersectsRectPlanar(ST_GeomFromText('POINT(%.18g " - "%.18g)', %d), ST_GeomFromText('POINT(%.18g %.18g)', %d)) = 1", + "\"%s\".ST_IntersectsRectPlanar(ST_GeomFromText('POINT(%.17g " + "%.17g)', %d), ST_GeomFromText('POINT(%.17g %.17g)', %d)) = 1", clmName.c_str(), minX, minY, srid, maxX, maxY, srid); } diff --git a/ogr/ogrsf_frmts/mvt/ogrmvtdataset.cpp b/ogr/ogrsf_frmts/mvt/ogrmvtdataset.cpp index fadf1938b908..7b37c500dd48 100644 --- a/ogr/ogrsf_frmts/mvt/ogrmvtdataset.cpp +++ b/ogr/ogrsf_frmts/mvt/ogrmvtdataset.cpp @@ -5392,7 +5392,7 @@ static bool WriteMetadataItem(const char *pszKey, int nValue, static bool WriteMetadataItem(const char *pszKey, double dfValue, sqlite3 *hDBMBTILES, CPLJSONObject &oRoot) { - return WriteMetadataItemT(pszKey, dfValue, "%.18g", hDBMBTILES, oRoot); + return WriteMetadataItemT(pszKey, dfValue, "%.17g", hDBMBTILES, oRoot); } /************************************************************************/ diff --git a/ogr/ogrsf_frmts/mysql/ogrmysqltablelayer.cpp b/ogr/ogrsf_frmts/mysql/ogrmysqltablelayer.cpp index f07612d1e6e4..63d958a5c7cd 100644 --- a/ogr/ogrsf_frmts/mysql/ogrmysqltablelayer.cpp +++ b/ogr/ogrsf_frmts/mysql/ogrmysqltablelayer.cpp @@ -477,8 +477,8 @@ void OGRMySQLTableLayer::BuildWhere() const double dfMaxY = sEnvelope.MaxY; CPLsnprintf(szEnvelope, sizeof(szEnvelope), - "POLYGON((%.18g %.18g, %.18g %.18g, %.18g %.18g, %.18g " - "%.18g, %.18g %.18g))", + "POLYGON((%.17g %.17g, %.17g %.17g, %.17g %.17g, %.17g " + "%.17g, %.17g %.17g))", dfMinX, dfMinY, dfMaxX, dfMinY, dfMaxX, dfMaxY, dfMinX, dfMaxY, dfMinX, dfMinY); diff --git a/ogr/ogrsf_frmts/openfilegdb/filegdbindex.cpp b/ogr/ogrsf_frmts/openfilegdb/filegdbindex.cpp index 1c3ddf445609..b585783325f9 100644 --- a/ogr/ogrsf_frmts/openfilegdb/filegdbindex.cpp +++ b/ogr/ogrsf_frmts/openfilegdb/filegdbindex.cpp @@ -1014,7 +1014,7 @@ static const char *FileGDBValueToStr(OGRFieldType eOGRFieldType, case OFTInteger: return CPLSPrintf("%d", psValue->Integer); case OFTReal: - return CPLSPrintf("%.18g", psValue->Real); + return CPLSPrintf("%.17g", psValue->Real); case OFTString: return psValue->String; case OFTDateTime: diff --git a/ogr/ogrsf_frmts/openfilegdb/gdalopenfilegdbrasterband.cpp b/ogr/ogrsf_frmts/openfilegdb/gdalopenfilegdbrasterband.cpp index 7e337ebb0910..c093b78c2e88 100644 --- a/ogr/ogrsf_frmts/openfilegdb/gdalopenfilegdbrasterband.cpp +++ b/ogr/ogrsf_frmts/openfilegdb/gdalopenfilegdbrasterband.cpp @@ -719,7 +719,7 @@ bool OGROpenFileGDBDataSource::OpenRaster(const GDALOpenInfo *poOpenInfo, if (std::fabs(dfNoData) > std::numeric_limits::max()) { CPLError(CE_Failure, CPLE_AppDefined, - "Invalid nodata value %.18g for Float32", dfNoData); + "Invalid nodata value %.17g for Float32", dfNoData); return false; } bHasNoData = true; @@ -762,7 +762,7 @@ bool OGROpenFileGDBDataSource::OpenRaster(const GDALOpenInfo *poOpenInfo, dfNoData != static_cast(static_cast(dfNoData))) { CPLError(CE_Failure, CPLE_AppDefined, - "Invalid nodata value %.18g for %s", dfNoData, + "Invalid nodata value %.17g for %s", dfNoData, GDALGetDataTypeName(eDT)); return false; } @@ -1904,7 +1904,7 @@ CPLErr GDALOpenFileGDBRasterBand::IReadBlock(int nBlockXOff, int nBlockYOff, { for (int x = 0; x < nBlockXSize; ++x) { - printf("%.18g ", // ok + printf("%.17g ", // ok static_cast(pImage)[y * nBlockXSize + x]); } printf("\n"); // ok diff --git a/ogr/ogrsf_frmts/openfilegdb/ogropenfilegdblayer.cpp b/ogr/ogrsf_frmts/openfilegdb/ogropenfilegdblayer.cpp index 28d2686d1c28..752ef017a997 100644 --- a/ogr/ogrsf_frmts/openfilegdb/ogropenfilegdblayer.cpp +++ b/ogr/ogrsf_frmts/openfilegdb/ogropenfilegdblayer.cpp @@ -778,7 +778,7 @@ int OGROpenFileGDBLayer::BuildLayerDefinition() "OpenFileGDB", "For field %s, XML definition " "mentions %s as default value whereas " - ".gdbtable header mentions %.18g. Using %s", + ".gdbtable header mentions %.17g. Using %s", poGDBField->GetName().c_str(), pszDefaultValue, psDefault->Real, pszDefaultValue); } diff --git a/ogr/ogrsf_frmts/openfilegdb/ogropenfilegdblayer_write.cpp b/ogr/ogrsf_frmts/openfilegdb/ogropenfilegdblayer_write.cpp index 22053cf8c98d..3b1d365f83c3 100644 --- a/ogr/ogrsf_frmts/openfilegdb/ogropenfilegdblayer_write.cpp +++ b/ogr/ogrsf_frmts/openfilegdb/ogropenfilegdblayer_write.cpp @@ -208,34 +208,34 @@ static void XMLSerializeGeomFieldBase(CPLXMLNode *psRoot, } CPLCreateXMLElementAndValue( psSpatialReference, "XOrigin", - CPLSPrintf("%.18g", poGeomFieldDefn->GetXOrigin())); + CPLSPrintf("%.17g", poGeomFieldDefn->GetXOrigin())); CPLCreateXMLElementAndValue( psSpatialReference, "YOrigin", - CPLSPrintf("%.18g", poGeomFieldDefn->GetYOrigin())); + CPLSPrintf("%.17g", poGeomFieldDefn->GetYOrigin())); CPLCreateXMLElementAndValue( psSpatialReference, "XYScale", - CPLSPrintf("%.18g", poGeomFieldDefn->GetXYScale())); + CPLSPrintf("%.17g", poGeomFieldDefn->GetXYScale())); CPLCreateXMLElementAndValue( psSpatialReference, "ZOrigin", - CPLSPrintf("%.18g", poGeomFieldDefn->GetZOrigin())); + CPLSPrintf("%.17g", poGeomFieldDefn->GetZOrigin())); CPLCreateXMLElementAndValue( psSpatialReference, "ZScale", - CPLSPrintf("%.18g", poGeomFieldDefn->GetZScale())); + CPLSPrintf("%.17g", poGeomFieldDefn->GetZScale())); CPLCreateXMLElementAndValue( psSpatialReference, "MOrigin", - CPLSPrintf("%.18g", poGeomFieldDefn->GetMOrigin())); + CPLSPrintf("%.17g", poGeomFieldDefn->GetMOrigin())); CPLCreateXMLElementAndValue( psSpatialReference, "MScale", - CPLSPrintf("%.18g", poGeomFieldDefn->GetMScale())); + CPLSPrintf("%.17g", poGeomFieldDefn->GetMScale())); CPLCreateXMLElementAndValue( psSpatialReference, "XYTolerance", - CPLSPrintf("%.18g", poGeomFieldDefn->GetXYTolerance())); + CPLSPrintf("%.17g", poGeomFieldDefn->GetXYTolerance())); CPLCreateXMLElementAndValue( psSpatialReference, "ZTolerance", - CPLSPrintf("%.18g", poGeomFieldDefn->GetZTolerance())); + CPLSPrintf("%.17g", poGeomFieldDefn->GetZTolerance())); CPLCreateXMLElementAndValue( psSpatialReference, "MTolerance", - CPLSPrintf("%.18g", poGeomFieldDefn->GetMTolerance())); + CPLSPrintf("%.17g", poGeomFieldDefn->GetMTolerance())); CPLCreateXMLElementAndValue(psSpatialReference, "HighPrecision", "true"); if (poSRS) { @@ -824,7 +824,7 @@ static CPLXMLNode *CreateXMLFieldDefinition(const OGRFieldDefn *poFieldDefn, { auto psDefaultValue = CPLCreateXMLElementAndValue( GPFieldInfoEx, "DefaultValueNumeric", - CPLSPrintf("%.18g", psDefault->Real)); + CPLSPrintf("%.17g", psDefault->Real)); if (!bArcGISPro32OrLater) { CPLAddXMLAttributeAndValue( @@ -843,7 +843,7 @@ static CPLXMLNode *CreateXMLFieldDefinition(const OGRFieldDefn *poFieldDefn, { CPLCreateXMLElementAndValue( GPFieldInfoEx, "DefaultValueNumeric", - CPLSPrintf("%.18g", FileGDBOGRDateToDoubleDate( + CPLSPrintf("%.17g", FileGDBOGRDateToDoubleDate( psDefault, /* bConvertToUTC = */ true, poGDBFieldDefn->IsHighPrecision()))); } diff --git a/ogr/ogrsf_frmts/pg/ogrpgresultlayer.cpp b/ogr/ogrsf_frmts/pg/ogrpgresultlayer.cpp index 4078e17fc4ad..6a6e1b345dc9 100644 --- a/ogr/ogrsf_frmts/pg/ogrpgresultlayer.cpp +++ b/ogr/ogrsf_frmts/pg/ogrpgresultlayer.cpp @@ -341,9 +341,9 @@ void OGRPGResultLayer::SetSpatialFilter(int iGeomField, OGRGeometry *poGeomIn) if (sEnvelope.MaxY > 90.0) sEnvelope.MaxY = 90.0; } - CPLsnprintf(szBox3D_1, sizeof(szBox3D_1), "%.18g %.18g", + CPLsnprintf(szBox3D_1, sizeof(szBox3D_1), "%.17g %.17g", sEnvelope.MinX, sEnvelope.MinY); - CPLsnprintf(szBox3D_2, sizeof(szBox3D_2), "%.18g %.18g", + CPLsnprintf(szBox3D_2, sizeof(szBox3D_2), "%.17g %.17g", sEnvelope.MaxX, sEnvelope.MaxY); osWHERE.Printf( "WHERE %s && %s('BOX3D(%s, %s)'::box3d,%d) ", diff --git a/ogr/ogrsf_frmts/pg/ogrpgtablelayer.cpp b/ogr/ogrsf_frmts/pg/ogrpgtablelayer.cpp index 69776e7ad6fa..82276a09caf6 100644 --- a/ogr/ogrsf_frmts/pg/ogrpgtablelayer.cpp +++ b/ogr/ogrsf_frmts/pg/ogrpgtablelayer.cpp @@ -1086,9 +1086,9 @@ void OGRPGTableLayer::BuildWhere() if (sEnvelope.MaxY > 90.0) sEnvelope.MaxY = 90.0; } - CPLsnprintf(szBox3D_1, sizeof(szBox3D_1), "%.18g %.18g", sEnvelope.MinX, + CPLsnprintf(szBox3D_1, sizeof(szBox3D_1), "%.17g %.17g", sEnvelope.MinX, sEnvelope.MinY); - CPLsnprintf(szBox3D_2, sizeof(szBox3D_2), "%.18g %.18g", sEnvelope.MaxX, + CPLsnprintf(szBox3D_2, sizeof(szBox3D_2), "%.17g %.17g", sEnvelope.MaxX, sEnvelope.MaxY); osWHERE.Printf( "WHERE %s && ST_SetSRID('BOX3D(%s, %s)'::box3d,%d) ", diff --git a/ogr/ogrsf_frmts/shape/shape2ogr.cpp b/ogr/ogrsf_frmts/shape/shape2ogr.cpp index 457ce1711fc9..04b4b94d3f23 100644 --- a/ogr/ogrsf_frmts/shape/shape2ogr.cpp +++ b/ogr/ogrsf_frmts/shape/shape2ogr.cpp @@ -1734,7 +1734,7 @@ OGRErr SHPWriteOGRFeature(SHPHandle hSHP, DBFHandle hDBF, if (nCounter <= 10) { CPLError(CE_Warning, CPLE_AppDefined, - "Value %.18g of field %s with 0 decimal of " + "Value %.17g of field %s with 0 decimal of " "feature " CPL_FRMT_GIB " is bigger than 2^53. " "Precision loss likely occurred or going to " @@ -1752,7 +1752,7 @@ OGRErr SHPWriteOGRFeature(SHPHandle hSHP, DBFHandle hDBF, if (!ret) { CPLError(CE_Warning, CPLE_AppDefined, - "Value %.18g of field %s of feature " CPL_FRMT_GIB + "Value %.17g of field %s of feature " CPL_FRMT_GIB " not " "successfully written. Possibly due to too larger " "number " diff --git a/ogr/ogrsf_frmts/sqlite/ogrsqlitevirtualogr.cpp b/ogr/ogrsf_frmts/sqlite/ogrsqlitevirtualogr.cpp index 21203fe0ccaf..770058868712 100644 --- a/ogr/ogrsf_frmts/sqlite/ogrsqlitevirtualogr.cpp +++ b/ogr/ogrsf_frmts/sqlite/ogrsqlitevirtualogr.cpp @@ -1271,7 +1271,7 @@ static int OGR2SQLITE_Filter(sqlite3_vtab_cursor *pCursor, // such as Decimal.Comma. osAttributeFilter += osOp; osAttributeFilter += - CPLSPrintf("%.18g", sqlite3_value_double(argv[i])); + CPLSPrintf("%.17g", sqlite3_value_double(argv[i])); } else if (eSQLiteType == SQLITE_TEXT) { @@ -2510,7 +2510,7 @@ static int OGR2SQLITESpatialIndex_Filter(sqlite3_vtab_cursor *pCursor, } #ifdef DEBUG_OGR2SQLITE - CPLDebug("OGR2SQLITE", "Spatial filter : %.18g, %.18g, %.18g, %.18g", + CPLDebug("OGR2SQLITE", "Spatial filter : %.17g, %.17g, %.17g, %.17g", dfMinX, dfMinY, dfMaxX, dfMaxY); #endif diff --git a/ogr/ogrsf_frmts/wfs/ogroapifdriver.cpp b/ogr/ogrsf_frmts/wfs/ogroapifdriver.cpp index e950d2989061..5036731e408b 100644 --- a/ogr/ogrsf_frmts/wfs/ogroapifdriver.cpp +++ b/ogr/ogrsf_frmts/wfs/ogroapifdriver.cpp @@ -2020,7 +2020,7 @@ CPLString OGROAPIFLayer::AddFilters(const CPLString &osURL) std::swap(dfMaxX, dfMaxY); } osURLNew = CPLURLAddKVP(osURLNew, "bbox", - CPLSPrintf("%.18g,%.18g,%.18g,%.18g", + CPLSPrintf("%.17g,%.17g,%.17g,%.17g", dfMinX, dfMinY, dfMaxX, dfMaxY)); if (!m_osActiveCRS.empty()) { diff --git a/ogr/ogrspatialreference.cpp b/ogr/ogrspatialreference.cpp index ef664419206e..8ce5b24e9795 100644 --- a/ogr/ogrspatialreference.cpp +++ b/ogr/ogrspatialreference.cpp @@ -8090,8 +8090,8 @@ OGRErr OGRSpatialReference::SetDerivedGeogCRSWithPoleRotationNetCDFCFConvention( SetProjection("Rotated_pole"); SetExtension( "PROJCS", "PROJ4", - CPLSPrintf("+proj=ob_tran +o_proj=longlat +lon_0=%.18g +o_lon_p=%.18g " - "+o_lat_p=%.18g +a=%.18g +b=%.18g " + CPLSPrintf("+proj=ob_tran +o_proj=longlat +lon_0=%.17g +o_lon_p=%.17g " + "+o_lat_p=%.17g +a=%.17g +b=%.17g " "+to_meter=0.0174532925199433 " "+wktext", 180.0 + dfGridNorthPoleLon, dfNorthPoleGridLon,