Какво е целочислено деление в Java?
Делението в Java се извършва нормално като обикновеното деление в математиката or реалния живот. Въпреки това, той просто изхвърля остатъка. Например, ако разделите 9 на 2, частното е 4, а остатъкът е 1. В реалния живот отговорът е 4,5 or 4½. Ако извършите същото изчисление с int в Java, отговорът ви ще бъде 4. Той не е закръглен до най-близкото цяло число (като ~4,5 = 5) 1, тъй като остатъкът се изхвърля.Пример 1 [ Остатъкът е 0 ]
Целочисленото деление в Java работи перфектно за всички случаи, когато делителят напълно разделя дивидента ( цяло число, разделено на x цяло число). Отговорът е цяло число и целочисленият тип данни може да го побере без препълване. Следователно няма загуба на данни. Например, погледнете следния фрагмент.
public class IntegerDivision {
public static void main(String[] args) {
int dividend = 100;
int divisor = 5;
int quotient = dividend / divisor;
//Dividend completely divides the divisor
System.out.println(dividend + " / " + divisor + " = " + quotient);
dividend = 143;
divisor = 11;
quotient = dividend / divisor;
//Dividend completely divides the divisor
System.out.println(dividend + " / " + divisor + " = " + quotient);
}
}
Изход
100/5 = 20 143/11 = 13
Пример 2 [ Остатъкът не е 0 ]
За всички случаи на деление, при които остатъкът не е 0, крайният резултат ще бъде отрязан до най-голямото делимо цяло число (9/2 = 4). Това ще бъде показано в предстоящия пример. Може да има моменти, когато ви трябва действителното частно в десетичен знак. В този случай можете да използвате типа данни float or double. Въпреки това, ако искате да закръглите частното до най-близкото int, можете да направите следното.
public class IntegerDivision {
public static void main(String[] args) {
int dividend = 9;
int divisor = 2;
int quotient = dividend / divisor;
// Case I - Dividend does not divide the divisor completely
// The quotient is chopped / truncated
System.out.print("Integer division \t\t" );
System.out.println(dividend + " / " + divisor + " = " + quotient);
// Case II - Mathematical or real life division
// Use float or double data type to get the actual quotient
double actualQuotient = (double)dividend / divisor;
System.out.print("Mathematics division \t\t" );
System.out.println((double)dividend + " / " + divisor + " = " + actualQuotient);
// Case III - Integer Division with rounding off
// the quotient to the closest integer
long roundedQuotient = Math.round((double)dividend / divisor);
System.out.print("Round off int division \t\t" );
System.out.println((double)dividend + " / " + divisor + " = " + roundedQuotient);
}
}
Изход
Цяло деление 9 / 2 = 4 Математическо деление 9,0 / 2 = 4,5 Закръглено цяло деление 9,0 / 2 = 5
Обяснение
Случай I и случай II се обясняват сами. За случай III можете да го разбиете на следните стъпки.-
Първо, трябва да преобразувате дивидента в двойно.
-
Извършете обикновеното разделяне на Java int.
-
Закръглете коефициента с помощта на метода Math.round() .
-
Използвайте дълъг тип данни, за да съхраните закръгления коефициент.
-
Ето! Имате желания резултат като коефициент.
GO TO FULL VERSION