Мне нужно обработать субметровые координаты в C ++, которые имеют большие целые части (например, 515876.12 // 5117789.22), но у меня возникают проблемы с округлением:
double inUTMX = 560351.12 is displayed as 560351
double inUTMY = 5113570.22 is displayed as 5.11357e+06
Я могу нормализовать координаты для обработки при необходимости (например, / 1e5), но мне нужно сначала прочитать координаты субметра через командную строку. Беда в том, что они всегда округляются.
Есть ли хороший способ справиться с двойниками, которые имеют большие целочисленные значения в C ++?
(Попробовал в Python, он сохраняет всю точность как поплавок, просто интересно, где я ошибаюсь.)
Любые идеи / указатели высоко ценится.
Вы можете изменить как double
с помощью потоковой передачи std::setprecision
,
Пример:
#include <iostream>
#include <iomanip>
int main () {
double inUTMX = 560351.12;
double inUTMY = 5113570.22;
std::cout << std::setprecision(20) << inUTMX << std::endl;
std::cout << std::setprecision(20) << inUTMY << std::endl;
return 0;
}
Выход:
560351.11999999999534
5113570.2199999997392