типы — Обработка двойных чисел с большими целыми частями в переполнении стека

Мне нужно обработать субметровые координаты в 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, он сохраняет всю точность как поплавок, просто интересно, где я ошибаюсь.)

Любые идеи / указатели высоко ценится.

0

Решение

Вы можете изменить как 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
0

Другие решения


По вопросам рекламы [email protected]