【问题标题】:Java - How to do floor division?Java - 如何进行楼层划分?
【发布时间】:2019-05-20 11:18:01
【问题描述】:

我知道在 Python 中你可以像这样进行地板除法:

5 // 2 #2

// 在 Java 中用于完全不同的东西。有没有办法在 Java 中进行楼层划分?

【问题讨论】:

  • 请注意,(如果您一直使用 python3.x)在 Java 中,将两个整数相除将始终使用地板除法。
  • Java int 除法与 Python 的地板除法不太一样。 // 向负无穷大舍入。 Java int 除法向零舍入。但是Java中的5 / 2会给你2,如果那是你所追求的。
  • 您正在寻找Math.floorDiv()

标签: java floor-division


【解决方案1】:

你可以的

double val = 5 / 2;
int answer = Math.floor(val);

int answer = Math.floorDiv(5, 2);

如果您要调用System.out.println(answer);,输出将是

2

【讨论】:

  • 如果操作数是整数,这似乎效率低下。 Math.floor 采用 double 类型的参数,但表达式的计算结果为 int,如问题的 cmets 中所述。这意味着输入被转换为double(并以double 的形式返回),这对于整数运算来说是不可取的。
  • 这甚至都不正确。当ab 具有int 类型时,Math.floor(a / b) 给出与a / b 相同的结果。在 Python 中 5 // -2 给出 -3 在 Java 中 Math.floor(5 / -2) 给出 -2.0
【解决方案2】:

您可以轻松使用 Math.floorDiv() 方法。 例如:

int a = 15, b = 2; 
System.out.println(Math.floorDiv(a, b));
// Expected output: 7

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多