Java 中的整数除法

本文详细介绍了当我们将两个整数相除时内部会发生什么。

在下面的 Java 代码中,有四个 Java 语句。每行根据彼此相除的数字打印不同的输出。

package integer_division;
public class IntegerDivision {
    public static void main(String[] args) {
        System.out.println(10 / 9);
        System.out.println(-10 / 9);
        System.out.println(10 / -9);
        System.out.println(10 / 19);
        System.out.println((float) 10 / 9);
        System.out.println((double) 10 / 9);
    }
}
  1. 在情况 1 中,较大的整数除以较小的整数。结果输出为整数 1。从数学上讲,当我们将十除以九时,这将导致重复数字 1.1111...。但是在 Java 语言中,当一个整数除以另一个整数时,它将丢弃余数并保留商。因此,结果输出为整数。
  2. 在情况 2 中,当我们将负整数除以正整数时,这将导致整数成为 -1。如上所述,整数会丢弃余数并保留商。因此,结果值为负整数。
  3. 在情况 3 中,存在相反的情况,其中分子是正整数,而分母是负整数。结果输出为 -1。同样,分子或分母中的负号无关紧要。它只是简单地将两个数字相除而不保留​​任何余数。因此,输出再次是整数的取反。
  4. 在情况 4 中,分母大于分子,这导致数字小于 1。如上所述,数字将在零后截断并输出值 0 作为其输出。
  5. 在情况 5 中,我们将输出手动类型转换为 float 值。

首先让我们了解类型转换。

类型转换是将一种数据类型转换为另一种数据类型的过程,我们可以手动或自动进行。

  1. 拓宽类型转换:通常称为隐式转换。在这种类型的转换中,较小的数据类型将转换为较高的数据类型。编译器会自动执行此转换。
  2. 缩小类型转换:通常称为显式转换。在这种类型的转换中,较大的数据类型将转换为某些较小的数据类型,从而导致数据丢失。

因此,在第 3 种情况下,编译器隐式截断的数据将被手动强制转换为浮点数,从而形成一个完整的有理数。该数字最多显示 8 位数据。

同样,在情况 6 中,我们将手动将整数除法转换为 double 值。因此,这将导致十进制数字显示最多 16 位数字。

上述代码的输出请参考以下部分。

1
-1
-1
1.1111112
1.1111111111111112