【问题标题】:How would one round any integer to the next highest hundred in Java?如何将任何整数舍入到 Java 中的下一个最高百位?
【发布时间】:2013-08-21 23:13:49
【问题描述】:

为了说明,我想找出最好的方法是对以下整数进行四舍五入:

(整数)->(四舍五入)

9 -> 100

200 -> 200

201 -> 300

1367 -> 1400

...等等等等...关于使用 Java 完成此任务的最佳方法有什么建议吗?

【问题讨论】:

  • 哪种方式会导致内存效率最高的方法。

标签: java math integer rounding


【解决方案1】:

用 100 确定模数

int k = 1234;
int mod = k % 100; //mod = 34
int difference = 100 - mod; //difference = 66
k += difference;

直截了当。

【讨论】:

    【解决方案2】:
    public static int ceil100(int num) {
        return (num + 99) / 100 * 100;
    }
    

    当然,效率不高,但仍然有效。其他人发布的答案也有效:

    public static int ceil100(int num) {
        return num + 100 - num % 100;
    }
    

    【讨论】:

      【解决方案3】:
      int d = num % 100;
      num = num+100-d
      

      【讨论】:

        【解决方案4】:

        使用Math#ceil()

        int[] ints = {9, 200, 201, 1367, 90210};
        
        int[] rounded = new int[5];
        for (int i = 0; i < ints.length; i++) {
            rounded[i] = (int) (Math.ceil(ints[i]/100f) * 100f);
        }
        
        // prints: [100, 200, 300, 1400, 90300]
        System.out.println(Arrays.toString(rounded));
        

        【讨论】:

          猜你喜欢
          • 2021-10-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-31
          • 2014-08-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多