From dfb749a6c871babefff358c3b1a460a33dea67a0 Mon Sep 17 00:00:00 2001 From: Joel Rosdahl Date: Fri, 30 Dec 2022 21:49:23 +0100 Subject: fix: Avoid sometimes too wide percent figure in --show-stats If the nominator is 99999 and the denominator is 100000, the percent function in Statistics.cpp would return "(100.00%)" instead of the wanted "(100.0%)". Fix this by using the alternate format string if the result string overflows its target size. --- src/core/Statistics.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/core/Statistics.cpp b/src/core/Statistics.cpp index 98a76231..13302fe9 100644 --- a/src/core/Statistics.cpp +++ b/src/core/Statistics.cpp @@ -152,10 +152,13 @@ percent(const uint64_t nominator, const uint64_t denominator) { if (denominator == 0) { return ""; - } else if (nominator >= denominator) { - return FMT("({:5.1f}%)", (100.0 * nominator) / denominator); + } + + std::string result = FMT("({:5.2f}%)", (100.0 * nominator) / denominator); + if (result.length() <= 8) { + return result; } else { - return FMT("({:5.2f}%)", (100.0 * nominator) / denominator); + return FMT("({:5.1f}%)", (100.0 * nominator) / denominator); } } -- cgit v1.2.1