Одна из таких функций — QTextStream::setRealNumberNotation(). С ее помощью вы можете выбрать различные варианты записи вещественных чисел, такие как обычная запись с фиксированной точкой (например, «123.45»), экспоненциальная запись (например, «1.2345e+02») или инженерная запись (например, «123.45e+00»).
Для форматирования чисел в стандартном формате можно использовать методы класса QLocale, такие как toString() или toDouble(). Например, следующий код покажет число 1234.5 в виде «1,234.50»:
QLocale locale;QString formattedNumber = locale.toString(1234.5, 'f', 2);qDebug() << formattedNumber;
Кроме того, класс QLocale предоставляет методы для настройки формата чисел в зависимости от текущей локали. Например, следующий код покажет число 1234.5 в виде "1.234,50" на системах с локалью, где разделитель тысяч - точка, а разделитель дробной части - запятая:
QLocale locale(QLocale::German);QString formattedNumber = locale.toString(1234.5, 'f', 2);qDebug() << formattedNumber;
В этом примере мы создаем объект QLocale, указывая локаль 'German', которая использует другой формат чисел. Затем мы вызываем метод toString() с теми же параметрами, и получаем строку в нужном формате.
Входные данные | Ожидаемый результат |
---|---|
QTextStream stream(&stdout); | 3.14 |
Как видно из примера, вызов метода setRealNumberPrecision(2)
обеспечивает отображение числа с двумя знаками после запятой.
Например, чтобы вывести число 3.14159 с точностью до двух знаков после запятой, можно воспользоваться следующим кодом:
QString pi = QString::number(3.14159, 'f', 2);
Теперь переменная pi содержит строку "3.14". Если бы мы указали точность, равную 0, то результатом было бы число "3".
qSetRealNumberPrecision(4);
Пример использования:
double number = 1234.5678;QTextStream out(stdout);out.setFieldWidth(10);out.setPadChar(' ');out << number << endl;
1234.57
12.34
Для выравнивания чисел в Qt доступны следующие флаги:
left
- выравнивание по левому краю. Числа будут выровнены по левому краю поля.right
- выравнивание по правому краю. Числа будут выровнены по правому краю поля.internal
- внутреннее выравнивание. Этот флаг используется для выравнивания чисел с разным числом символов перед запятой. Для положительных чисел знак "+" будет выровнен с левым краем поля, для отрицательных чисел знак "-" будет выровнен с левым краем поля, а число само по себе будет выровнено по правому краю поля.
Пример использования флагов выравнивания:
QTextStream cout(stdout);
cout.setFieldAlignment(QTextStream::right);
cout << "Число: " << qSetFieldWidth(10) << 12.345 << endl;
cout.setFieldAlignment(QTextStream::left);
cout << "Число: " << qSetFieldWidth(10) << 12.345 << endl;
cout.setFieldAlignment(QTextStream::internal);
cout << "Число: " << qSetFieldWidth(10) << 12.345 << endl;
Результат выполнения этого кода будет следующим:
Число: 12.345Число: 12.345Число: +12.345
Использование специальных символов для форматирования вещественных чисел в Qt
Основными символами форматирования вещественных чисел являются символы %f, %g и %e.
double number = 3.14159;QString formattedNumber = QString("Число: %.2f").arg(number);
Результат выполнения данного кода будет строка "Число: 3.14".
double number = 12345.6789;QString formattedNumber = QString("Число: %g").arg(number);
Результат выполнения данного кода будет строка "Число: 12345.7", где число отображается в экспоненциальной форме, так как оно не помещается в обычном виде.
double number = 0.00012345;QString formattedNumber = QString("Число: %e").arg(number);
Результат выполнения данного кода будет строка "Число: 1.234500e-04".
double number = 123.45;QString formattedNumber = QString("Число: %10.2f").arg(number);
double number = 123.45;QString formattedNumber = QString("Число: %+10.2f").arg(number);
Преобразование вещественных чисел в строку в Qt
Для преобразования вещественных чисел в строку в Qt, можно использовать класс QString
.
Методы setNum()
и number()
класса QString
позволяют выполнить это преобразование. Метод setNum()
принимает на вход вещественное число и задает его запись в виде строки, а метод number()
выполняет обратное преобразование, принимая на вход строку и возвращая соответствующее вещественное число.
Пример использования метода setNum()
:
double number = 3.14159;
QString str;
str.setNum(number);
// str содержит "3.14159"
Пример использования метода number()
:
QString str = "2.718";
double number = str.number().toDouble();
// number содержит 2.718
Также можно задать формат записи вещественных чисел с помощью метода setRealNumberPrecision()
. Данный метод позволяет задать количество цифр после запятой в записи числа.
double number = 1.23456789;
QString str;
str.setNum(number, 'f', 2);
// str содержит "1.23"