我正在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();
但我不明白为什么。 in
是从文本文件句柄中读取的QXmlStreamReader
。
答案 0 :(得分:6)
可能是在将值写回XML时。请在您的问题中发布该代码。
如果我在看到代码之前猜到了,您正在使用QString::number
将双回转换为字符串。转换中的默认精度为6,这与您所看到的相对应。您可以提高精度以获得所有小数。