Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 这种精度损失发生在哪里?如何防止?_C++_Qt_Xml Parsing_Precision_Gpx - Fatal编程技术网

C++ 这种精度损失发生在哪里?如何防止?

C++ 这种精度损失发生在哪里?如何防止?,c++,qt,xml-parsing,precision,gpx,C++,Qt,Xml Parsing,Precision,Gpx,我正在用Qt编写一个简单的工具,它从两个GPX(XML)文件中读取数据,并以某种方式将它们组合起来。我用包含精度为6位小数的航路点的跟踪日志测试了我的工具。当我从GPX文件中读取它们时,精度降低到4位小数(正确舍入)。例如,这个原始标签: <trkpt lat="61.510656" lon="23.777735"> 但我不明白为什么是从文本文件句柄读取的QXmlStreamReader。可能是在将值写回XML时。请在你的问题中贴上密码 如果在看到代码之前我有一个猜测,那么您正在使

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

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

但我不明白为什么<
中的code>是从文本文件句柄读取的
QXmlStreamReader

可能是在将值写回XML时。请在你的问题中贴上密码


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

我把这个放在:qDebug()试试:
qDebug(),我打赌所有东西最终都会使用
QString QString::number(双n,字符格式='g',int precision=6)
这就是问题所在!数字确实是罪魁祸首。
<trkpt lat="61.5107" lon="23.7777">
double lat = in.attributes().value("", "lat").toString().toDouble();