向上舍入到最接近的一百

2022-09-01 12:24:03

我来到了我的java程序中的一个部分,我需要四舍五入到最接近的一百个,并认为可能有一些方法可以做到这一点,但我想不是。所以我在网上搜索了例子或任何答案,我还没有找到任何答案,因为所有的例子似乎都是最接近的一百个。我只想这样做并四舍五入。也许有一些简单的解决方案我忽略了。我已经尝试过其他功能,但尚未找到答案。如果有人可以帮助我解决这个问题,我将不胜感激。Math.ceil

如果我的数字是 203,我希望结果四舍五入为 300。你明白了。

  1. 801->900
  2. 99->100
  3. 14->100
  4. 452->500

答案 1

利用整数除法,它截断商的小数部分。要使其看起来像是四舍五入,请先添加 99。

int rounded = ((num + 99) / 100 ) * 100;

例子:

801: ((801 + 99) / 100) * 100 → 900 / 100 * 100 → 9 * 100 = 900
99 : ((99 + 99) / 100) * 100 → 198 / 100 * 100 → 1 * 100 = 100
14 : ((14 + 99) / 100) * 100 → 113 / 100 * 100 → 1 * 100 = 100
452: ((452 + 99) / 100) * 100 → 551 / 100 * 100 → 5 * 100 = 500
203: ((203 + 99) / 100) * 100 → 302 / 100 * 100 → 3 * 100 = 300
200: ((200 + 99) / 100) * 100 → 299 / 100 * 100 → 2 * 100 = 200

相关的 Java 语言规范引用,第 15.17.2 节

整数除法四舍五入为 0。也就是说,对于二进制数值提升 (§5.6.2) 后为整数的操作数 n 和 d 生成的商是一个整数值 q,其大小在满足 |d ·q|≤ ||。


答案 2

这是一个算法,我相信它适用于任何“倍数”的情况。让我知道你的想法。

int round (int number,int multiple){

    int result = multiple;

    //If not already multiple of given number

    if (number % multiple != 0){

        int division = (number / multiple)+1;

        result = division * multiple;

    }

    return result;

}