Java 中的整数除法
Rashmi Patidar
2023年10月12日
本文详细介绍了当我们将两个整数相除时内部会发生什么。
在下面的 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.1111...
。但是在 Java 语言中,当一个整数除以另一个整数时,它将丢弃余数并保留商。因此,结果输出为整数。 - 在情况 2 中,当我们将负整数除以正整数时,这将导致整数成为
-1
。如上所述,整数会丢弃余数并保留商。因此,结果值为负整数。 - 在情况 3 中,存在相反的情况,其中分子是正整数,而分母是负整数。结果输出为
-1
。同样,分子或分母中的负号无关紧要。它只是简单地将两个数字相除而不保留任何余数。因此,输出再次是整数的取反。 - 在情况 4 中,分母大于分子,这导致数字小于
1
。如上所述,数字将在零后截断并输出值0
作为其输出。 - 在情况 5 中,我们将输出手动类型转换为
float
值。
首先让我们了解类型转换。
类型转换是将一种数据类型转换为另一种数据类型的过程,我们可以手动或自动进行。
- 拓宽类型转换:通常称为
隐式转换
。在这种类型的转换中,较小的数据类型将转换为较高的数据类型。编译器会自动执行此转换。 - 缩小类型转换:通常称为
显式转换
。在这种类型的转换中,较大的数据类型将转换为某些较小的数据类型,从而导致数据丢失。
因此,在第 3 种情况下,编译器隐式截断的数据将被手动强制转换为浮点数,从而形成一个完整的有理数。该数字最多显示 8 位数据。
同样,在情况 6 中,我们将手动将整数除法转换为 double
值。因此,这将导致十进制数字显示最多 16 位数字。
上述代码的输出请参考以下部分。
1
-1
-1
0
1.1111112
1.1111111111111112
作者: Rashmi Patidar
Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.
LinkedIn