【问题标题】:Division in Java to get next upper valueJava中的除法以获得下一个上限值
【发布时间】:2018-01-18 03:26:53
【问题描述】:

我正在划分两个整数 x/y,。说 3/2。然后一个会得到 1 作为结果,尽管实际结果是 1.5。好的,这很明显,因为它是 int 除法。但我希望 1.5 被四舍五入到下一个最高的 int 而不是直接最低的。因此需要 2 作为结果。 (可以使用 mod 然后除法编写简单的逻辑......但我正在寻找基于 Java 的简单 API)。有什么想法吗?

【问题讨论】:

  • 你为什么不简单地加1。?
  • @Ravi,如果除法是 4 / 2,加 1 将给出不正确的结果。

标签: java division integer-division


【解决方案1】:

一般来说,您可以写(x + y - 1) / y 来获得x/y 的完整版本。如果是3/2,那就变成(3 + 2 - 1) / 2 = 4 / 2 = 2

【讨论】:

    【解决方案2】:

    可以使用ceil(天花板)功能: https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#ceil(double)

    这基本上会四舍五入到最接近的整数。

    【讨论】:

    【解决方案3】:

    如果您可以将数据类型更改为双精度,以下是最好的解决方案 -

    double x = 3;
    double y = 2;        
    Math.ceil(Math.abs(x/y));
    

    这将为您提供 2.0

    【讨论】:

      【解决方案4】:
      import java.lang.Math;
      //round Up   Math.ceil(double num)
      //round Down Math.floor(double num)
      public class RoundOff 
      {
       public static void main(String args[])
       { //since ceil() method takes double datatype value as an argument
         //either declare at least one of this variable as double
          int x=3; 
          int y=2; //double y =2;
      
         //or at least cast one of this variable as a (double) before taking division
          System.out.print(Math.ceil((double)x/y)); //prints 2.0
         //System.out.print(Math.ceil(x/y));
       }
      }
      

      【讨论】:

      • 纯代码答案很少有帮助。请解释您的代码如何回答问题。供我们大家学习。谢谢。
      • 感谢您的建议,我认为代码很简单,可以通过查看直接理解,因为我已经通过评论展示了重要的事情。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 2011-09-28
      • 2022-08-22
      • 2012-05-24
      • 2011-08-09
      • 2013-03-02
      • 1970-01-01
      相关资源
      最近更新 更多