【问题标题】:Java Round up Any NumberJava 对任意数字进行四舍五入
【发布时间】:2011-05-31 06:04:56
【问题描述】:

对于一个简单的问题,我似乎找不到我正在寻找的答案:如何将任何数字四舍五入到最接近的 int

例如,只要数字为 0.2、0.7、0.2222、0.4324、0.99999,我希望结果为 1。

目前为止

int b = (int) Math.ceil(a / 100);

不过,它似乎没有做这项工作。

【问题讨论】:

  • 你的示例代码中为什么要除以 100?
  • 我打赌你的a 是整数类型。
  • 是的,你的权利 a 是一个 int...感谢您指出这一点。 100.0 为我排序。
  • 我猜他想要的是四舍五入的/100,但是是的,这个问题需要澄清一下。
  • 注意:this 问题提供了更好的答案。

标签: java math int rounding


【解决方案1】:

Math.ceil() 是要调用的正确函数。我猜aint,这将使a / 100 执行整数运算。请改用Math.ceil(a / 100.0)

int a = 142;
System.out.println(a / 100);
System.out.println(Math.ceil(a / 100));
System.out.println(a / 100.0);
System.out.println(Math.ceil(a / 100.0));
System.out.println((int) Math.ceil(a / 100.0));

输出:

1
1.0
1.42
2.0
2

http://ideone.com/yhT0l

【讨论】:

  • 只有当 "a" 是双倍时才这样做
  • ^^ "a" 必须是双精度或强制转换。
  • a 在此示例中是 int,它按建议工作。执行int / float 时,结果为float,如输出所示。试试这个链接。
【解决方案2】:

我不知道你为什么要除以 100,但这是我的假设 int a;

int b = (int) Math.ceil( ((double)a) / 100);

int b = (int) Math.ceil( a / 100.0);

【讨论】:

    【解决方案3】:
    int RoundedUp = (int) Math.ceil(RandomReal);
    

    这似乎做得很完美。每次都工作。

    【讨论】:

      【解决方案4】:

      假设 a 为双精度数,我们需要一个不带小数位的四舍五入数字。使用 Math.round() 函数。
      这是我的解决方案。

      double a = 0.99999;
      int rounded_a = (int)Math.round(a);
      System.out.println("a:"+rounded_a );
      
      Output : 
      a:1
      

      【讨论】:

      • 这是一个错误的答案,因为这里要求如果 a=0.2 向上取整,结果将为 0
      【解决方案5】:

      最简单的方法就是: 您将收到一个浮点数或双精度数,并希望将其转换为最接近的整数,然后只需执行 System.out.println((int)Math.ceil(yourfloat)); 它会完美地工作

      【讨论】:

        【解决方案6】:

        10 年后,这个问题仍然困扰着我。

        所以这就是那些像我一样迟到的人的答案。

        这不起作用

        int b = (int) Math.ceil(a / 100);
        

        因为结果 a / 100 原来是一个整数并且它被四舍五入所以 Math.ceil 对此无能为力。

        你必须避免用这个进行四舍五入操作

        int b = (int) Math.ceil((float) a / 100);
        

        现在可以了。

        【讨论】:

          【解决方案7】:

          只是另一种选择。使用数学基础知识:

          Math.ceil(p / K)((p-1) // K) + 1 相同

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-09-17
            • 2019-07-02
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多