Согласно this answer, если я хочу проверить, что один номер несколько раз, я могу использовать оператор остатка %
.В чем причина этого, казалось бы, перепрограммированного кода для проверки одного числа, кратного другому?
if(number % anotherNumber == 0) {
number is a multiple of anotherNumber
}
Еще в this fun project, которая полна намеренно overengineered кода они используют следующий подход:
// int number;
// int anotherNumber;
if ((((int)(number/anotherNumber)) * anotherNumber == number)) {
number is a multiple of anotherNumber
}
, который фактически делит number
на anotherNumber
и затем умножает его обратно и проверяет, что результат number
.
Имеет ли второй подход какой-либо практический смысл или он просто намеренно перегружен?
(Обратите внимание, что существуют, видимо, запутанные условия, подобные этому, которые корректно обрабатывают целочисленные условия переполнения, тогда как очевидная версия не делает этого. Не упрощайте такой код. По крайней мере, пока вы не перейдете на язык с разумными целыми числами .) –
Проект, с которым вы связаны, предназначен для пародии (и вы выделили столько же в своем сообщении). Я почти уверен, что ответ заключается в том, что он был намеренно переработан, потому что это то, что кодер собирался сделать. Вероятно, можно с уверенностью предположить, что он не имеет практического значения :) – PT114
Было бы иметь значение, если 'number' является' long', 'float' или' double', но неясно, что это за тип. –