Я сделал класс, который конвертировать QList<qreal>
(очень большой список) в строку JSON, но он генерирует очень большой текст.
Вот код:
QJsonObject rootObject;
rootObject.insert("Test",0.05);
qDebug()<<QJsonDocument(rootObject).toJson(QJsonDocument::Compact);
И я попробовал равный код:
QJsonObject rootObject;
rootObject.insert("Test",QString("0.05").toDouble());
qDebug()<<QJsonDocument(rootObject).toJson(QJsonDocument::Compact);
И отладочный выход всегда:
{"Test":0.050000000000000003}
Я хочу получить короткий вывод, как это:
{"Test":0.05}
Есть ли способ исправить QJsonDocument
? Или сделать некоторые десятичные числа округлить / ограничить?
На OS X я попробовал следующее: —
QVariant d(0.5);
QJsonValue val = QJsonValue::fromVariant(d);
qDebug() << val.toDouble();
Это печатает 0,5, как и ожидалось.
Тем не менее, я думаю, что проблема связана с точность с плавающей точкой. QJSonDocument представляет число с максимально возможной точностью, но не имеет функции для ограничения числа представляемых десятичных разрядов, как это представлено в QString.
Хотя это и не идеально, если вы действительно хотите, чтобы 0.5 представлялось таким образом, вы можете написать строковое значение вместо double.