【发布时间】:2015-03-03 16:17:31
【问题描述】:
我有一个三维点集。每个点 拥有自己的坐标 (x,y,z) 和 double 值。 现在我想转换点集中的所有坐标 成整数值。
例如,如果我的集合由 0.0 到 0.0 之间的随机点组成
1.0。如果我使用floor() 转换成整数,我无法区分
结果。
如何正确转换它们?我需要一些缩放吗?
【问题讨论】:
-
尝试使用强制转换:int a = (int) 1.6d;
-
您期望得到什么?当然,如果您截断任何数字 0.xxxx,您将得到 0。您可以在之前对数字进行预缩放,但比例因子取决于您的精度要求。
-
我同意 Wolf 提供的
SCALE和铸造解决方案。但是如果你想提高结果的准确性,你必须在铸造/四舍五入之前加上 0.5。pi->x = (int)(SCALE * pd->x + 0.5);。这是因为强制转换将提供较低的整数。例如:(int)100.9 将给出 100 而不是 101。
标签: c geometry data-conversion