From: Joel Rosdahl Date: Fri, 30 Dec 2022 20:49:23 +0000 (+0100) Subject: fix: Avoid sometimes too wide percent figure in --show-stats X-Git-Tag: v4.8~58 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dfb749a6c871babefff358c3b1a460a33dea67a0;p=thirdparty%2Fccache.git 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. --- diff --git a/src/core/Statistics.cpp b/src/core/Statistics.cpp index 98a762310..13302fe92 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); } }