Use the same conversion grams->lbs in dive and equipment list

Subsurface stores weight values in grams. When displaying lbs,
the dive list was not rounding the converted weights up, but
rather truncating the value at the decimal place. The equipment
list was rounding the converted weights up. This gave two
different displayed values for the same weight value.

Signed-off-by: Benjamin Fogel <nystire@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Benjamin 2013-10-04 15:49:32 +03:00 committed by Dirk Hohndel
parent c28fe00bfe
commit 9961cf13b1
2 changed files with 5 additions and 3 deletions

View file

@ -217,8 +217,9 @@ QString get_depth_unit()
QString get_weight_string(weight_t weight, bool showunit)
{
if (prefs.units.weight == units::KG) {
double kg = weight.grams / 1000.0;
return QString("%1%2").arg(kg, 0, 'f', kg >= 20.0 ? 0 : 1 ).arg(showunit ? _("kg") : "");
int gr = weight.grams % 1000;
int kg = weight.grams / 1000;
return QString("%1.%2%3").arg(kg).arg((unsigned)(gr) / 100).arg(showunit ? _("kg") : "");
} else {
double lbs = grams_to_lbs(weight.grams);
return QString("%1%2").arg(lbs, 0, 'f', lbs >= 40.0 ? 0 : 1 ).arg(showunit ? _("lbs") : "");

View file

@ -1114,7 +1114,8 @@ QString DiveItem::displayWeight() const
int kg = weight() / 1000;
str = QString("%1.%2").arg(kg).arg((unsigned)(gr) / 100);
} else {
str = QString("%1").arg((unsigned)(grams_to_lbs(weight())));
double lbs = grams_to_lbs(weight());
str = QString("%1").arg(lbs, 0, 'f', lbs >= 40.0 ? 0 : 1 );
}
return str;