Correctly round total weight displayed

The code was wrong (and in the case of metric display for weights >= 20kg,
spectacularly wrong) in more or less all cases.

Rounding. It's good for the sole.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2016-02-24 08:20:24 +01:00
parent 6d52d0f761
commit 86ec3d06a2

View file

@ -44,13 +44,16 @@ QString weight_string(int weight_in_grams)
if (get_units()->weight == units::KG) { if (get_units()->weight == units::KG) {
int gr = weight_in_grams % 1000; int gr = weight_in_grams % 1000;
int kg = weight_in_grams / 1000; int kg = weight_in_grams / 1000;
if (kg >= 20.0) { if (kg >= 20.0)
str = QString("0"); str = QString("%1").arg(kg + (gr >= 500 ? 1 : 0));
} else { else
str = QString("%1.%2").arg(kg).arg((unsigned)(gr) / 100); str = QString("%1.%2").arg(kg).arg((unsigned)(gr + 50) / 100);
}
} else { } else {
double lbs = grams_to_lbs(weight_in_grams); double lbs = grams_to_lbs(weight_in_grams);
if (lbs >= 40.0)
lbs = rint(lbs + 0.5);
else
lbs = rint(lbs + 0.05);
str = QString("%1").arg(lbs, 0, 'f', lbs >= 40.0 ? 0 : 1); str = QString("%1").arg(lbs, 0, 'f', lbs >= 40.0 ? 0 : 1);
} }
return (str); return (str);