问题是如何将给定值舍入到给定因子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);
}