core: add cast_int<> function

We had a pattern where doubles were converted to long with
lrint() and then down-cast to a narrower int type.

Because this is unwieldy, introduce a function encapsulating
this.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2024-09-03 09:52:12 +02:00 committed by bstoeger
parent 110e64bc66
commit 77b12bbccf
10 changed files with 34 additions and 23 deletions

View file

@ -1170,13 +1170,13 @@ static weight_t parseWeight(const QString &text)
return {};
double number = numOnly.toDouble();
if (text.contains(gettextFromC::tr("kg"), Qt::CaseInsensitive)) {
return { .grams = static_cast<int>(lrint(number * 1000)) };
return { .grams = int_cast<int>(number * 1000) };
} else if (text.contains(gettextFromC::tr("lbs"), Qt::CaseInsensitive)) {
return { .grams = lbs_to_grams(number) };
} else {
switch (prefs.units.weight) {
case units::KG:
return { .grams = static_cast<int>(lrint(number * 1000)) };
return { .grams = int_cast<int>(number * 1000) };
case units::LBS:
return { .grams = lbs_to_grams(number) };
default: