我创建了一个类,可以将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,您可以写一个字符串值,而不是双精度。