У меня большое значение в MySQL.Он правильно хранится в MySQL как DECIMAL (22,2).Я подтвердил, что значение хранится правильно.Если я запускаю запрос через командную консоль, я получаю правильное значение обратно в желаемой ненаучной форме (значение и форма: 99996543210987654321.99).
Проблема в том, что когда я запускаю запрос с помощью Qt /C ++ Я не вижу, как я могу показать число в ненаучной записи.Я получаю (9.99965432109877e + 19) вместо (99996543210987654321.99).Я хочу позже.
В C ++ / Qt Вот так я извлекаю значение из запроса Qt.
(1) Сначала я открываю соединение базы данных с MySQL с помощью Qt.
(2) Затем я делаю запрос, чтобы найти конкретную запись.Пока все хорошо.
(3) Затем я извлекаю конкретное значение поля из возвращенной записи, найденной запросом, используя точный код, указанный ниже.
* ПРИМЕЧАНИЕ.QSqlQuery :: value возвращает Qvariant.
http://doc.qt.io/qt-5/qvariant.html#QVariant-30
if( query3.next() )
{
QVariant number = query3.value(query3.record().indexOf("account_balance"));
qout << number.toString() << endl;
}
Я также пытался (с тем же результатом).
if( query3.next() )
{
qout<<query3.value(query3.record().indexOf("account_balance")).toString()<<endl;
}
Просто добавить "qout "это просто QTextStream.Я думаю, что проблема не в qout, потому что код ниже выводит 99996543210987654321.99 как без научной нотации.
qout << "99996543210987654321.99" << endl;
Как я могу вернуть значение 99996543210987654321.99 как есть без округления с ++ / qt и без научной нотации?
.
.
.
.
.
.
РЕДАКТИРОВАТЬ:
попытался по предложению Пита
char string_account_balance[32] = "";
sprintf( string_account_balance, "%.2f", query3.value(query3.record().indexOf("account_balance")).toString() );
Получил ошибки и сбой.Ошибки:
(1) не могут передавать объекты не POD типа 'class QByteArray' через '...';вызов прервет выполнение
(2). Формат «% .2f» ожидает тип «double», но аргумент 3 имеет тип «int».