«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > ## Почему оператор модуля Java (%) возвращает отрицательные результаты для отрицательных чисел?

## Почему оператор модуля Java (%) возвращает отрицательные результаты для отрицательных чисел?

Опубликовано 8 ноября 2024 г.
Просматривать:151

## Why Does Java\'s Modulus Operator (%) Return Negative Results for Negative Numbers?

Вычисления модулей в Java: обработка отрицательных чисел

В Java выполнение операций по модулю над отрицательными числами часто дает неожиданные результаты. При применении оператора модуля (%) к отрицательному числу можно было бы ожидать получения положительного значения, но в некоторых случаях он возвращает отрицательный результат. Чтобы понять это поведение, важно углубиться во внутреннюю работу вычислений модуля.

Оператор модуля вычисляет остаток при делении одного числа на другое. Для положительных чисел остаток всегда положителен. Однако при работе с отрицательными числами существует два возможных определения модуля:

  1. Напольный модуль: это определение округляет остаток до ближайшего целого числа в сторону отрицательной бесконечности.
  2. Модуль усечения: это определение округляет остаток до нуля (т. е. отбрасывает любую дробную часть).

Java использует определение модуля усечения. Следовательно, при делении отрицательного числа на положительное остаток всегда отрицательный. Например, -13 % 64 в Java оценивается как -13, поскольку -13 делится на 64 без какой-либо дробной составляющей.

Если требуется положительный остаток для отрицательных входных данных, можно использовать следующий фрагмент кода:

int r = x % n;
if (r > 0 && x 

И наоборот, если кто-то предпочитает отрицательный остаток для отрицательных входных данных, можно использовать следующий фрагмент кода:

int r = x % n;
if (r 

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

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3