diff --git a/src/output/stats.cpp b/src/output/stats.cpp index 3cd77bfd..1d1038d5 100644 --- a/src/output/stats.cpp +++ b/src/output/stats.cpp @@ -79,17 +79,21 @@ namespace stats { void Writer::writeHeader() { CallOnce( - [](auto& fname, auto& stat_writers) { + [this](auto& fname, auto& stat_writers) { std::fstream StatsOut(fname, std::fstream::out | std::fstream::app); - StatsOut << std::setw(14) << "step" << "," << std::setw(14) << "time" + StatsOut << std::setw(io_precision + 8) + << "step" + << "," + << std::setw(io_precision + 8) + << "time" << ","; for (const auto& stat : stat_writers) { if (stat.is_vector()) { for (auto i { 0u }; i < stat.comp.size(); ++i) { - StatsOut << std::setw(14) << stat.name(i) << ","; + StatsOut << std::setw(io_precision + 8) << stat.name(i) << ","; } } else { - StatsOut << std::setw(14) << stat.name() << ","; + StatsOut << std::setw(io_precision + 8) << stat.name() << ","; } } StatsOut << std::endl; diff --git a/src/output/stats.h b/src/output/stats.h index e9161669..b687e410 100644 --- a/src/output/stats.h +++ b/src/output/stats.h @@ -151,6 +151,8 @@ namespace stats { tools::Tracker m_tracker; public: + const int io_precision = 18; + Writer() {} ~Writer() = default; @@ -185,14 +187,29 @@ namespace stats { (void)communicate; tot_value = value; #endif - CallOnce( - [](auto&& fname, auto&& value) { - std::fstream StatsOut(fname, std::fstream::out | std::fstream::app); - StatsOut << std::setw(14) << value << ","; - StatsOut.close(); - }, - m_fname, - tot_value); + + if constexpr (std::is_floating_point_v) { + CallOnce( + [this](auto&& fname, auto&& value) { + std::fstream StatsOut(fname, std::fstream::out | std::fstream::app); + StatsOut << std::setw(io_precision + 8) + << std::setprecision(io_precision) + << value + << ","; + StatsOut.close(); + }, + m_fname, + tot_value); + } else { + CallOnce( + [this](auto&& fname, auto&& value) { + std::fstream StatsOut(fname, std::fstream::out | std::fstream::app); + StatsOut << std::setw(io_precision + 8) << value << ","; + StatsOut.close(); + }, + m_fname, + tot_value); + } } void endWriting();