我想在以后存储一个double值QJsonObject并检索相同的值.但是,检索到的值的精度较低.
这是一个例子:
qDebug() << QJsonObject({{"number", 49.195502187}}).value("number").toDouble();
Run Code Online (Sandbox Code Playgroud)
输出49.1955,而不是49.195502187.
我已经检查了为什么qjsonvalue todouble转换导致数据丢失?,但它是关于数据类型之间的转换,与我的具体情况无关.
如何检索正确的值?
仅在显示值时才会发生精度损失.在内部存储正确的值.为了确保它是这样,打破代码如下:
QJsonObject json({{"number", 49.195502187}});
double value = json.value("number").toDouble();
qDebug() << value;
Run Code Online (Sandbox Code Playgroud)
然后使用调试器,断点设置为qDebug() << value;:
我建议您使用QString::number以便为显示的值设置所需的精度,例如:
qDebug() << QString::number(value, 'g', 14);
Run Code Online (Sandbox Code Playgroud)
这将为您提供存储在JSON中的值:
49.195502187
Run Code Online (Sandbox Code Playgroud)