Просто добавлю это, как никто не написал здесь:
Пока вы наверняка можете использовать
Math.Abs(number1 - number2);
что является самым простым решением (и принятым ответом), интересно, никто не написал, что на самом деле делает Abs. Вот решение, которое работает на Java, C, C # и любом другом языке с синтаксисом C, подобным :
int result = number1 - number2;
if (result < 0) {
result *= -1;
}
Это так просто. Вы также можете написать это так:
int result = number1 > number2 ? number1 - number2 : number2 - number1;
Последний может быть еще быстрее после компиляции; оба имеют одно вычитание if и одно, но в некоторых случаях первое имеет умножение, а в последнем нет. Почему только в некоторых случаях? У некоторых процессоров есть операция «знак подкачки», и компилятор распознает, что делает *= -1
, он просто меняет знак, поэтому вместо умножения он выдаст операцию знака подстановки для процессоров, которые его предлагают, и эта операция Операция ЦП может получить (обычно один тактовый цикл).
Первый пример кода на самом деле делает то, что делает Abs в большинстве реализаций, чтобы использовать «знак свопа» там, где это поддерживается, последний будет быстрее на процессорах, у которых нет «знака свопа» и если умножения дороже, чем дополнения (на современных процессорах они часто одинаково быстры).