【发布时间】:2015-06-24 21:25:54
【问题描述】:
我需要在 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 inUTMX = 560351.12 存储为 560351”?
-
数字看起来很小,整数部分超过了双精度。可能是输出问题。
-
存储为应该是显示为。
-
Cout 为我提供了舍入值,也处理了步进输出值的结果,因为我所有的计算都舍入为整数。
-
有很多格式化标志可以帮助你。 setprecision、fixed 等等。
标签: c++ types double rounding-error