Ответ 1
Вы можете сделать это так:
public decimal FindDifference(decimal nr1, decimal nr2)
{
return Math.Abs(nr1 - nr2);
}
Мне нужен идеальный алгоритм или функция С# для вычисления разности (расстояния) между двумя десятичными числами.
Например, разница между:
100 и 25 75
100 и -25 125
-100 и -115 15
-500 и 100 600
Есть ли функция С# или очень элегантный алгоритм для вычисления этого или мне нужно идти и обрабатывать каждый случай отдельно с ifs.
Если есть такая функция или алгоритм, какой из них?
Вы можете сделать это так:
public decimal FindDifference(decimal nr1, decimal nr2)
{
return Math.Abs(nr1 - nr2);
}
result = Math.Abs(value1 - value2);
Просто добавьте это, так как никто не написал его здесь:
Пока вы можете использовать
Math.Abs(number1 - number2);
что является самым легким решением (и принятым ответом), я удивляюсь, что никто не писал, что на самом деле делает Abs. Здесь решение, которое работает в Java, C, С# и любом другом языке с синтаксисом типа C:
int result = number1 - number2;
if (result < 0) {
result *= -1;
}
Это так просто. Вы также можете записать его так:
int result = number1 > number2 ? number1 - number2 : number2 - number1;
Последний может быть даже быстрее, если он скомпилирован (оба имеют одно и то же вычитание, но в первом случае в некоторых случаях есть умножение, а последнее - нет). Первый из них фактически выполняет работу Abs.
Я не думаю, что это возможно в С#, вам, возможно, придется взглянуть на его реализацию в Assembler