我需要处理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 :(得分: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