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.
{
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);
}
}