Integer division in floating point context что это

Обновлено: 06.07.2024

Is it possible to get rid of the "integer division in floating-point context" warning, in this line of code:

648k 90 90 gold badges 747 747 silver badges 1123 1123 bronze badges It is a Java 11 (Project SDK is set to Java version 11.0.5) project, on Intellij

Integer division: How do you produce a double?

the value of d is 0.0 . It can be forced to work by casting:

But is there another way to get the correct double result? I don't like casting primitives, who knows what may happen.


14.7k 16 16 gold badges 42 42 silver badges 49 49 bronze badges 5,613 7 7 gold badges 38 38 silver badges 57 57 bronze badges

1 Answer 1

Well one solution would be

Note that integer division truncates, so the Math.round call is superfluous in the above.

On the other hand, this may not give you the answer you are expecting. A possible alternative that gives a different (but maybe more correct) answer is:

(You will see different results for num = 16 , for example.)

In other words, this warning could actually be pointing out a bug in your code! Making warnings "just go away" is a bad idea if the warning is telling you something important.

If you really need to suppress a warning on a specific line with Intellij; see Disable warning in IntelliJ for one line. (Using the IDE shortcut means you don't have to know the compiler specific warning name.)

Integer division in floating point context что это


025-Integer and floating point

The program path of this article isgopl/basictypes/number. 1. Integer type and floating point type 1.1 Integer type The go language is very similar to the c language, and integers are also divided int.


Notes_004_ integer and floating point

Integer In Python, in addition to decimal, there are three other bases: 0b or 0B, binary 0 1 0o or 0O, octal 0 1 2 3 4 5 6 7 0x or 0X, hexadecimal 0 1 2 3 4 5 6 7 8 9 a b c d e f These three bases can.

Floating point to integer hh

Integer to floating point

16777216 over 1 33554433 more than 2.

More Recommendation


Python integer and floating point

Python integer and floating point The integer and floating-point types can be used directly. These two cannot directly with floating point numbers, lists, etc. Integrity Interthing in Python can be un.

Integer and floating point

1.1 concept Inside the JavaScript, all numbers are stored in the form of 64-bit floating point, even if the integer is the same, 1 and 1.0 are the same, the same number. That is, the bottom layer of t.

Integer and floating point

The data storage mode in the C language is only two types and floating point numbers. Integer Store in secondary complement. It can be divided into symbol integers and unsigned integers. For example, .

Integer and floating point

Integer and floating point numbers can be operated together Arithmetic Molding operation Flip The resulting results will ignore the pure decimal part, to obtain a portion of the integer, and th.

YOLOV3 combat 4: cfg file description and understanding in Darknet

Hello everyone, I am a small p, from today, will gradually analyze Darknet from the source code, welcome to join the object detection group813221712Discussion and exchange, please see the group announ.

Тип результата целочисленного деления

Не могу понять, почему IDE ругается.
Допустим, я инициализирую переменную с типом double и в нее кладу результат операции деления целых чисел:

Я назначаю результату тип double с тем смыслом, что результат может получиться как целочисленным, так и нет. В зависимости от того, что будет в переменной i(например 199).

Почему IDE выделяет это предупреждением integer division in floating-point context ?


Вычислить остаток от целочисленного деления 13 в 5 степени на 24
13^5mod24 как пишется и какие библиотеки нужно добавить. И что бы для прим данных то есть на int.


Как определить корректность заданного возраста (Тип результата boolean)
Возраст может принимать значения в диапазоне от 1-120. Вводимые значения 25,0,120,121. Как бэ в.


В чем ошибка при выводе двух целых чисел,нахождения результата их деления и выводом результата на экран?
решил вывести с клавиатуры два целых числа,написал программу как написано в учебнике Фаронова В.В.

Делал уже. Ничего не меняется. А вот если вместо 2 написать 2.0, то предупреждения от IDE нет.

На результат посмотри

Добавлено через 6 минут
int/int - это целочисленное деление, и результат его таки int . А ты его присваиваешь переменной типа double . Вот IDE тебе об этом и говорит.
А вот int/double - результат будет double , что целиком и полностью всех устраивает.

int/int - это целочисленное деление, и результат его таки int

Разве результатом 199/2 будет целое число?

Добавлено через 11 минут

Я так понимаю, что будет не целое число, но будет выполнено приведение к типу int и просто отбросится дробная часть, что не совсем корректно в боьшинстве случаев.
Т.е. Если в примере выше неизвестно какого типа число будет i, нужно его инициализировать как double(например), и в результате получится так же double без отбрасывания дробной части? Я так понимаю, что будет не целое число, но будет выполнено приведение к типу int Будет именно ЦЕЛОЕ ЧИСЛО. Без всяких отбрасываний и приведений. Именно поэтому тебе сказали посмотреть на результат.
Понимаешь что значит "целочисленное деление"? Будет именно ЦЕЛОЕ ЧИСЛО. Без всяких отбрасываний и приведений. Именно поэтому тебе сказали посмотреть на результат.
Понимаешь что значит "целочисленное деление"? При целочисленной арифметике результат деления одного целого числа на другое состоит из двух чисел — частного и остатка. Если остаток деления отбросить, получим результат, в абсолютной величине округленный до меньшего целого.

Добавлено через 1 минуту
Три болта надо поделить на двоих механиков. Каждому по одному. Один лишний. Именно так работает целочисленное деление. Никаких дробей, округлений и приведений.

При целочисленной арифметике результат деления одного целого числа на другое состоит из двух чисел — частного и остатка. Если остаток деления отбросить, получим результат, в абсолютной величине округленный до меньшего целого.

Здравствуйте.
Что касается математики: пусть a и b - целые числа, причем b не равно нулю. Для того, что-бы нацело разделить число a(делимое) на число b(делить), необходимо найти такие числа c и d, при которых будет выполняться равенство: a= b*c+d. В результате получим два числа: число с - неполное частное;
d - остаток от деления, при условии, что 0<=d<|b|.
При целочисленном делении в математике различают два случая:
случай первый: b>0 (делитель больше нуля).

При b>0, неполное частное с = a / b, где результат округлен до первого целого в меньшую сторону.

случай второй: b<0 (делитель меньше нуля).

При b<0, неполное частное с = a / b, где результат округлен до первого целого в большую сторону.

ПРИМЕР: -5 / 2 => неполное частное -3, остаток d=a-b*c, т.е. 1.
5 / -2 => неполное частное -2, остаток 1.

Результат работы программы:
-2 (Математически должно быть -3!)
-1. (Математическое условие предъявляемое остатку не выполняется!)

Вывод: В языке Ява при делении int/int, тип результата будет int. Но само значение результата математически верным будет не всегда. Ровно как и результат операции modulo "mod", "%" не является математическим остатком от деления двух целых чисел! Важно знать!

Что касается математики: пусть a и b - целые числа, причем b не равно нулю. Для того, что-бы нацело разделить число a(делимое) на число b(делить), необходимо найти такие числа c и d, при которых будет выполняться равенство: a= b*c+d. В результате получим два числа: число с - неполное частное; Результат работы программы:
-2 (Математически должно быть -3!)
-1. (Математическое условие предъявляемое остатку не выполняется!)

-5 = 2 * (-2) + (-1) = -4 -1 = -5

Не пойму, что тебя математически не устраивает.

-5 = 2 * (-2) + (-1) = -4 -1 = -5
Не пойму, что тебя математически не устраивает.

Из вашего выражения следует, что остаток от целочисленного деления равен (-1). Однако в математике понятие остатка от целочисленного деления довольно точно и однозначно определено! А именно: остатком от целочисленного деления двух целых чисел A и B (причем B не равно нулю) является целое число (в данном случае D), которое больше либо равно нулю и меньше делителя (в данном случае B) по модулю, и при котором выполняется равенство A=B*C+D. Из данного определения очевидно, что математический остаток от целочисленного деления двух целых чисел не может быть отрицательным числом! Если A=-5 и B=2, то имеем всего два числа допустимых в качестве остатка от целочисленного деления - это 0 и 1!
Из вашего же выражения следует, что неполное частное от целочисленного деления равно (-2). Проверим выполняется ли равенство A=B*C+D, при допустимых с точки зрения математики вероятных остатках 0 и 1.

1) A=2*(-2)+0 = -4 => равенство не выполняется, по скольку искомое делимое A равно (-5)!

2)A = 2 * (-2) + 1 = -3 => равенство не выполняется, по аналогичным причинам!

Таким образом можно сделать вывод, что число (-2) не является неполным частным от целочисленного деления -5 на 2 с точки зрения математики. Что и требовалось доказать.

Отвечая на ваш вопрос, математически меня не устраивает ни неполное частное в виде (-2), поскольку он не верен, ни остаток в виде (-1), поскольку математически он не допустим по определению. А вот с точки зрения информатики вполне допустимый результат.

Я всего-лишь хотел привлечь внимание к тому факту, что понятия "целочисленное деление" в информатике и "целочисленное деление" в математике имеют существенные различия. Это надо знать и учитывать. Особенно, когда пишутся программы для математических вычислений.

11 Answers 11

That avoids a cast. But you'll find that the cast conversions are well-defined. You don't have to guess, just check the JLS. int to double is a widening conversion. From §5.1.2:

Widening primitive conversions do not lose information about the overall magnitude of a numeric value.

[. ]

Conversion of an int or a long value to float, or of a long value to double, may result in loss of precision-that is, the result may lose some of the least significant bits of the value. In this case, the resulting floating-point value will be a correctly rounded version of the integer value, using IEEE 754 round-to-nearest mode (§4.2.4).

Читайте также: