Где происходит потеря точности и как ее предотвратить? - PullRequest
3 голосов
/ 24 января 2012

Я пишу простой инструмент в 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 чтение из дескриптора текстового файла.

1 Ответ

6 голосов
/ 24 января 2012

Вероятно, когда вы записываете значение обратно в XML.Пожалуйста, опубликуйте этот код в своем вопросе.

Если у меня была догадка, прежде чем я увидел код, вы используете QString::number для преобразования двойного обратно в строку.Точность по умолчанию в преобразовании равна 6, что соответствует тому, что вы видите.Вы можете увеличить точность, чтобы получить все десятичные дроби.

...