Java整数除法不为负数提供下限

AMA*_*ACB 4 java integer floor

我试图使用 java 的整数除法,据说它需要发言。但是,它向零而不是地板四舍五入。

public class Main {
    public static void main(String[] args) {
        System.out.println(-1 / 100); // should be -1, but is 0
        System.out.println(Math.floor(-1d/100d)); // correct
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我不想转换为双精度/浮点数,因为它需要高效。我试图用一种方法来解决这个问题,floorDivide(long a, long b). 我所拥有的是:

static long floorDivide(long a, long b) {
    if (a < 0) {
        // what do I put here?
    }
    return a / b;
}
Run Code Online (Sandbox Code Playgroud)

如果没有双精度/浮点数,我怎么能做到这一点?

Fra*_*per 8

floorDiv() 来自 Java.Math 正是你想要的。

static long floorDiv(long x, long y)
Run Code Online (Sandbox Code Playgroud)

返回小于或等于代数商的最大(最接近正无穷大)long 值。


Luc*_*cas 1

取绝对值,除以-1。

奇怪的错误。

  • 这不是一个错误,存在多种计算商/余数的方法。向 -1 舍入的除法是欧几里得除法,而 Java 使用截断除法。 (9认同)
  • 不适用于“-1 / 4”之类的内容。当我想要-1时它给出0 (2认同)