我制作了将 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。
但是,我认为问题出在 floating point precision 上。 QJSonDocument 尽可能准确地表示数字,但没有限制表示的小数位数的功能,如 QString 中所示。
虽然不理想,但如果您真的希望以这种方式表示 0.5,您可以编写一个字符串值而不是 double 值。
关于c++ - QJsonDocument::toJson() 生成超大文本。有办法解决吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26762311/