如何在c#中将负数转换为正数?

时间:2017-10-25 10:53:00

标签: c#

在取消负值即5 - (-5)的情况下,我们将其设为10,这是肯定的,数学上是正确的。

但在这种情况下,我们的逻辑应该将每个数字视为正数而不是负数。根据我们的要求,它应该是5 - (-5) = 0

3 个答案:

答案 0 :(得分:2)

其他人提供了Math.Abs​​作为解决方案。我不知道这是否会内联Math.Abs​​ ......但是从这样的数字来衡量性能增益与Math.Abs​​相比:

int d = X > 0 ? X : -X; 

验证它真的值得。

如果Math.Abs​​抛出OverflowException。您也可以使用选中的算法在直接C#中强制执行此操作:

int d = X > 0 ? X : checked(-X);

编辑:我对你可以使用的不同方法进行了一些快速测试:

Math.Abs(i)                    5839 ms     Factor 1
i > 0 ? i : -i                 6395 ms     Factor 1.09
(i + (i >> 31)) ^ (i >> 31)    5053 ms     Factor 0.86

答案 1 :(得分:0)

您需要使用Math.Abs()

您必须将每个可能为负数的数字转换为正值

var result = 5 - (Math.Abs(-5))

答案 2 :(得分:0)

尝试Math.Abs​​这将解决目的。

因此,在应用任何算术运算之前,您应该应用Math.Abs​​(value),它会将您的负值转换为正值。

class Program
   {
       static void Main()
       {
           //
           // Compute two absolute values.
           //
           int value1 = -1000;
           int value2 = 20;
           int abs1 = Math.Abs(value1);
           int abs2 = Math.Abs(value2);
           //
           // Write integral results.
           //
           Console.WriteLine(value1);
           Console.WriteLine(abs1);
           Console.WriteLine(value2);
           Console.WriteLine(abs2);

        }
    }