Форматирование числа в определенный формат QString
У меня вопрос о форматировании десятичного числа в определенный формат QString. В принципе, у меня есть поле ввода, в моей программе, которая может принимать любые значения. Я хочу, чтобы он перевел значение в этом поле в формат "+05.30" (на основе значения). Значение будет ограничено + / -99.99.
некоторые примеры включают:
.2 --> +00.02
-1.5 --> -01.50
9.9 --> +09.90
Я думаю использовать такой конвертер, но у него будут некоторые очевидные проблемы (нет ведущего 0, нет ведущего + знака).
QString temp = QString::number(ui.m_txtPreX1->text().toDouble(), 'f', 2);
этот вопрос имел некоторые сходства, но не связывает как переднюю, так и заднюю обивку.
преобразовать int в QString с нулевым заполнением (ведущие нули)
есть идеи, как подойти к этой проблеме? Ваша помощь приветствуется! Спасибо!
2 ответов
вам просто нужно добавить знак вручную:
QString("%1%2").arg(x < 0 ? '-' : '+').arg(qFabs(x),5,'f',2,'0');
редактировать: хуже всего то, что на самом деле существует внутренняя функция, QLocalePrivate:doubleToString
который поддерживает принудительный знак и заполнение на обоих концах одновременно, но он используется только с этими параметрами в QString::sprintf
, а не
-
QTextStream
и<<
оператор, который может заставить знак показывать, но не ширину или -
QString::arg
, которое может принудить ширину но не знаком.
но QTextStream
что может быть ошибка.