加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-14 19:14:11 所属栏目: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,应该向上舍入

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读