From 8f154c753c3f1cbe410ece709c8cdca252fd908e Mon Sep 17 00:00:00 2001 From: blocovin Date: Mon, 21 Jun 2021 21:37:53 +0200 Subject: [PATCH] Fix xml double value is rounded #1533 --- src/ifcconvert/IfcConvert.cpp | 2 +- src/serializers/schema_dependent/XmlSerializer.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ifcconvert/IfcConvert.cpp b/src/ifcconvert/IfcConvert.cpp index 536881401b..b799a43796 100644 --- a/src/ifcconvert/IfcConvert.cpp +++ b/src/ifcconvert/IfcConvert.cpp @@ -944,7 +944,7 @@ int main(int argc, char** argv) { } std::stringstream msg; - msg << std::setprecision (17) << "Using model offset (" << offset[0] << "," << offset[1] << "," << offset[2] << ")"; + msg << std::setprecision (std::numeric_limits< double >::max_digits10) << "Using model offset (" << offset[0] << "," << offset[1] << "," << offset[2] << ")"; Logger::Notice(msg.str()); } diff --git a/src/serializers/schema_dependent/XmlSerializer.cpp b/src/serializers/schema_dependent/XmlSerializer.cpp index 63646f9282..80ac57c02a 100644 --- a/src/serializers/schema_dependent/XmlSerializer.cpp +++ b/src/serializers/schema_dependent/XmlSerializer.cpp @@ -89,7 +89,7 @@ boost::optional format_attribute(const Argument* argument, IfcUtil: case IfcUtil::Argument_DOUBLE: { const double d = *argument; std::stringstream stream; - stream << d; + stream << std::setprecision (std::numeric_limits< double >::max_digits10) << d; value = stream.str(); break; } case IfcUtil::Argument_STRING: @@ -134,7 +134,7 @@ boost::optional format_attribute(const Argument* argument, IfcUtil: for (int i = 1; i < 5; ++i) { for (int j = 1; j < 4; ++j) { const double trsf_value = trsf.Value(j, i); - stream << trsf_value << " "; + stream << std::setprecision (std::numeric_limits< double >::max_digits10) << trsf_value << " "; } stream << ((i == 4) ? "1" : "0 "); }