Dynamiczna zmiana formatu wyświetlania stringa

0

Witam,
czy mógłby mnie ktoś nakierować, w jaki sposób mogę wyświetlać liczbę zmiennoprzecinkową jako string (np. w label'u) w taki sposób, że gdy posiada ona cyfry po przecinku różniące się od zera, to są te cyfry wyświetlane, natomiast, gdy po przecinku występują zera to są obcinane. Mam na myśli coś jak w przykładzie poniżej:

  • liczba 3.18942, po zaokrągleniu do dwóch miejsc po przecinku zostałaby wyświetlona jako 3.19,

  • liczba 3.10000 jako 3.1 (a nie 3.10),

  • liczba 3.08000 jako 3.08,

  • liczba 3.00000 jako 3 (a nie 3.00).

Chodzi mi o to, czy istnieje taka wbudowana funkcja, ponieważ przerzuciłem się z całkiem innego środowiska programistycznego i tam była taka funkcja. Szukałem sporo w dokumentacji, lecz mam problem z odnalezieniem dokładnie tego, o co mi chodzi. W chwili obecnej fragment mojego kodu wygląda tak:

   QString aStr;
   QString bStr;
   QString liczbaStr;
   float a;
   float b;
   float liczba;

aStr=ui->lineEdit->text();
bStr=ui->lineEdit_2->text();

a=aStr.toFloat();
b=bStr.toFloat();

liczba=a/b;
liczbaStr=QString::number(liczba,'f',2);
ui->label->setText(liczbaStr);
0

próbowałeś:

QString::number(liczba,'g',-1);

?

0

Wtedy, przy przykładowych danych a=13, b=7, wyświetlana liczba wygląda tak - 1.85714. Chciałbym natomiast, żeby była wyświetlana zawsze z dwoma miejscami po przecinku, za wyjątkiem sytuacji, że liczba wyjdzie np. 30.00000. Wtedy zamiast 30.00, chciałbym uzyskać wyświetlony wynik w takiej postaci - 30. Dziękuje za zainteresowanie.

0

no to nie ma wyjścia trzeba to ręcznie obrobić.
Są dwa wyjścia, albo zaokrąglić liczbę wejściową:

QString::number(qFloor(liczba*100)/100.0,'g',-1);

Albo samemu obciąć końcowe zera:

QString::number(liczba,'f',2).remove(QRegExp("(\\.0+$)|((?<=\\.\\d+)0+)"))

W sumie lepie zrobić to ręcznie niż używając regularnych wyrażeń.

0

Dokładnie o to mi chodziło. Rozwiązanie pierwsze, bez wyrażeń regularnych, to właśnie to, na czym mi zależało. Bardzo Ci dziękuję za poświęcony czas.

1 użytkowników online, w tym zalogowanych: 0, gości: 1