从绝对值减少一个?

Shi*_*mmy 2 c# optimization mathematical-optimization

我有一个整数,需要将其绝对值减一。

有没有比这更短的方法:

if(number > 0) number--; else if (number < 0) number++;
Run Code Online (Sandbox Code Playgroud)

Dav*_*ret 5

更短:

number -= Math.Sign(number);
Run Code Online (Sandbox Code Playgroud)

Math.Sign返回-1, 0, 或1取决于指定值的符号。

扩展方法

由于您说您经常面临这种情况,因此将其作为扩展方法以更好地表达您的意图可能会有所帮助:

public static int ReduceFromAbsoluteValue(this int number, int reduceValue)
{
    return number - Math.Sign(number) * reduceValue;
}

4.ReduceFromAbsoluteValue(1);  // 3
-4.ReduceFromAbsoluteValue(1); // -3
0.ReduceFromAbsoluteValue(1);  // 0
Run Code Online (Sandbox Code Playgroud)

或者命名它AddToAbsoluteValue并更改它以添加值。