我知道这不是一个很好的标题,所以我将尝试更详尽地解释。
基本上,我有一个仅少量更改的double,称为clusterSize
。然后,我在地图上有了第二个倍数,即纬度或经度,称为coord
。我想将coord
向下舍入到最接近的值,该值可以被clusterSize
整除,但是我们没有找到任何简单的方法。
尝试的代码:
private double roundDown(double coord, double clusterSize) {
return clusterSize * Math.floor(coord / clusterSize);
}
和:
private double roundDown(double coord, double clusterSize) {
return Math.floor((coord + clusterSize/2) / clusterSize) * clusterSize;
}
两者均未产生我想要的结果。如果您可以将我指向可以轻松完成此任务的库或函数,那就太好了。谢谢!
最佳答案
据我了解,这是您要寻找的东西:
private double roundDown(double coord, double clusterSize) {
return coord - (coord % clusterSize);
}
说明:
Mod运算符(
a%b
)返回除以b的余数。通过减去其余部分,我们保证了可分解性。测试运行:
coord clusterSize => result
1.1 .2 => 1.0
1.12 .11 => 1.1
注意:请记住正确处理
coord < clusterSize