我知道这不是一个很好的标题,所以我将尝试更详尽地解释。

基本上,我有一个仅少量更改的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

10-06 06:31