将double向下舍入到Java中其他double的最接近倍数?

将double向下舍入到Java中其他double的最接近倍数?,java,android,google-maps,math,Java,Android,Google Maps,Math,我意识到这不是一个很好的标题,所以我将尝试更彻底地解释 基本上,我有一个只有少量变化的双精度,称为clusterSize。然后,我有第二个双精度,地图上的纬度或经度,称为coord。我想将coord四舍五入到最接近的值,该值可以被clusterSize整除,但我们还没有找到任何简单的方法 已尝试的代码: private双舍入(双协作,双集群大小){ 返回clusterSize*数学楼层(坐标/clusterSize); } 以及: private双舍入(双协作,双集群大小){ 返回数学楼层((

我意识到这不是一个很好的标题,所以我将尝试更彻底地解释

基本上,我有一个只有少量变化的双精度,称为
clusterSize
。然后,我有第二个双精度,地图上的纬度或经度,称为
coord
。我想将
coord
四舍五入到最接近的值,该值可以被
clusterSize
整除,但我们还没有找到任何简单的方法

已尝试的代码:

private双舍入(双协作,双集群大小){
返回clusterSize*数学楼层(坐标/clusterSize);
}
以及:

private双舍入(双协作,双集群大小){
返回数学楼层((coord+clusterSize/2)/clusterSize)*clusterSize;
}

这两项都没有产生我想要的结果。如果你能给我指出一个可以轻松完成这项任务的库或函数,那就太好了。谢谢大家!

据我所知,以下是您想要的:

private double roundDown(double coord, double clusterSize) {
    return coord - (coord % clusterSize);
}
说明:

Mod运算符(
a%b
)返回a除以b的余数。通过减去余数,我们保证了可整除性

测试运行:

coord clusterSize => result
1.1   .2          => 1.0
1.12  .11         => 1.1

注意:请记住正确处理以下情况:
coord

它是否为所有coord提供了意外的值,还是仅仅是负值?一旦我看到该函数,它就非常有意义,简单而优雅。非常感谢你。