From 154c77778839c01aa2182d398748615a54edf322 Mon Sep 17 00:00:00 2001 From: John Preston Date: Fri, 11 Jul 2025 17:40:56 +0400 Subject: [PATCH] Improve formatting for some strange cases. --- Telegram/SourceFiles/lang/lang_tag.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Telegram/SourceFiles/lang/lang_tag.cpp b/Telegram/SourceFiles/lang/lang_tag.cpp index eb6f938bf8..02620f2e1d 100644 --- a/Telegram/SourceFiles/lang/lang_tag.cpp +++ b/Telegram/SourceFiles/lang/lang_tag.cpp @@ -949,7 +949,20 @@ QString FormatCountDecimal(int64 number) { } QString FormatExactCountDecimal(float64 number) { - return QLocale().toString(number, 'f', QLocale::FloatingPointShortest); + const auto locale = QLocale(); + if (qFuzzyCompare(number, base::SafeRound(number))) { + return locale.toString(int64(base::SafeRound(number))); + } + + // Somehow using QLocale::FloatingPointShortest sometimes produces + // "0.8500000000000001" on some systems / locales, + // so I want to stick to 6 digits max (default third argument value). + auto result = locale.toString(number, 'f'); + const auto zero = locale.zeroDigit(); + while (result.endsWith(zero)) { + result.chop(1); + } + return result; } ShortenedCount FormatCreditsAmountToShort(CreditsAmount amount) {