3

我正在 Qt 中编写一个简单的工具,它从两个 GPX (XML) 文件中读取数据并以某种方式组合它们。我使用包含具有 6 位小数精度的航点的跟踪日志测试了我的工具。当我从 GPX 文件中读取它们时,精度会降低到 4 个十进制数字(正确舍入)。因此,例如这个原始标签:

<trkpt lat="61.510656" lon="23.777735">

当我的工具再次编写它时变成了这个:

<trkpt lat="61.5107" lon="23.7777">

调试输出显示此行发生精度损失:

double lat = in.attributes().value("", "lat").toString().toDouble();

但我不明白为什么。inQXmlStreamReader从文本文件句柄读取。

4

1 回答 1

6

可能是在您将值回 XML 时。请在您的问题中发布该代码。

如果我在看到代码之前有一个猜测,那么您正在使用QString::number将双精度转换回字符串。转换中的默认精度为 6,这与您所看到的相对应。您可以提高精度以获得所有小数。

于 2012-01-24T14:58:53.260 回答