4

我已经制作了将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?或者让一些小数计数舍入/限制?

4

1 回答 1

1

在 OS XI 上尝试了以下操作:-

QVariant d(0.5);
QJsonValue val = QJsonValue::fromVariant(d);

qDebug() << val.toDouble();

正如预期的那样,这打印出 0.5。

但是,我认为问题是由于浮点精度。QJSonDocument 尽可能准确地表示数字,但没有像QString中那样限制所表示的小数位数的功能。

虽然不理想,但如果您真的想要以这种方式表示 0.5,您可以编写一个字符串值而不是双精度值。

于 2014-11-05T17:34:36.650 回答