在 Java 中将双倍向下舍入到最接近的倍数?



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

基本上,我有一个仅少量变化的双精度,称为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);
}

解释:

模组运算符 (a%b( 返回 a 的余数除以 b。通过代入余数,我们保证了可分性。

测试运行:

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

注意:请记住正确处理coord < clusterSize

相关内容

  • 没有找到相关文章

最新更新