java – 如何使用浮点数舍入到给定因子的最接近倍数?

前端之家收集整理的这篇文章主要介绍了java – 如何使用浮点数舍入到给定因子的最接近倍数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

问题是如何将给定值舍入到给定因子f的最近“几乎精确”倍数.例如:

如果f = 2.6,则每个“roundUp(x,2.6)”调用将从集合{0,/ – 2.6,/ – 2 * 2.6,/ – 3 * 2.6,…}返回一个数字.

通常,我的f是10的幂(功率为正或负)或1/2的功率为10.

另一个例子:f = 0.001,应该向上舍入到0.001的最接近的整数倍,例如{0,/ – 0.001,/ – 2 * 0.001,/ – 3 * 0.001}.

更新:我希望roundUp(x,f)的结果是结果的“上限”,也就是说,大于或等于x的倍数集中的最小元素(如果这是说出它的正确方法) .请参阅下面的答案,了解一个不那么优雅的解决方案(这似乎适用于我可以通过的所有案例).

我只需要一个像样的浮点近似(在Java中使用double).任何建议非常感谢!

最佳答案
double roundUp(double x,double f) {
  return f * Math.ceil(x / f);
}

猜你在找的Java相关文章