2016-06-13 10 views
0

Это похоже на глупый вопрос, но я не могу найти ответ нигде в документации Java. Если я объявляю два ints и затем их разделяю, что именно происходит? Преобразуются ли они в floats/doubles сначала, разделены, затем отбрасываются на integer или деление «сделано» как целые числа?Целочисленное деление в Java

Кроме того, чисто из экспериментов, целочисленное деление, похоже, округляет ответ к нулю (то есть 3/2 = 1 и -3/2 = -1). Правильно ли я верю в это?

+0

Преобразование не происходит. Они делятся как ints. И '-3/2 == -1'. –

+0

http://docs.oracle.com/javase/specs/jls/se8/html/jls-4.html#jls-4.2.2 – azurefrog

+0

простой способ мышления об этом состоит в том, что они разделены и что-то меньшее, чем полный int усечен. –

ответ

5

Они делятся на целую арифметику. Итак, разделив целое число a на целое число b вы получаете, сколько раз b вписывается в a. Также a % b даст вам остаток от дивизиона. Так (a/b) * b + a % b = a

1

Java делает Autoconvert типов:

«Это autoconverts Интс в парной разряд Это autoconverts шорт и байты Интс даже если не Интс не участвуют, требуя постоянные раздражающие слепки, когда вы хотите сделать короткую или байты арифметики.. Он автоматически конвертирует примитивы в обертки и наоборот для бокса и автобоксинга ». - user2357112

Java never ничего не делает, если вы не указали это.

Но все же integer/integer = integer.

Кроме того, он всегда усекает результат. Таким образом, если результат будет равен 0.999999 как float, целочисленное деление все равно вернет 0.

+0

Нет, он всегда округляется * к нулю *. –

+0

Я имел в виду, что, извините –

+0

Я считаю, что вы имели в виду усечение –

Смежные вопросы