在C#中将正数转换为负数
您可以将负数转换为正数,如下所示:
int myInt = System.Math.Abs(-5); 有一个等价的方法来使正数负面吗?
怎么样
 myInt = myInt * -1 
 int myNegInt = System.Math.Abs(myNumber) * (-1); 
 int negInt = -System.Math.Abs(myInt) 
同样的,你做任何事情都是消极的:在它前面放一个负号。
 var positive = 6; var negative = -positive; 
请注意所有回复的人
 - Math.Abs(myInteger) 
要么
 0 - Math.Abs(myInteger) 
要么
 Math.Abs(myInteger) * -1 
作为一种保持负数的负面方式,并转正面负面的方式。
 这种方法有一个缺陷。 它不适用于所有整数。  Int32types的范围是从“-2 31 ”到“2 31 –  1”。 这意味着还有一个“负面”的数字。 因此, Math.Abs(int.MinValue)抛出一个OverflowException 。 
正确的方法是使用条件语句:
 int neg = n < 0 ? n : -n; 
这种方法适用于“全部”整数。
简单的方法:
 myInt *= -1; 
 int negInt = 0 - myInt; 
或保证是负面的。
 int negInt = -System.Math.Abs(someInt); 
要切换整数的符号,只需使用符号运算符:
 myInt = -myInt; 
无论原始值是否定的,要使其为负数,首先使用Abs方法:
 myInt = -Math.Abs(myInt); 
编辑:这是错误的积极的投入…我犯了一个错误,忘记-x(2s-Complement值)中的其余位是他们在+ x的价值“相反”,不一样。 所以简单地改变符号位将不适用于正数。
我会在这里留下来的目的…
或者棘手的方式(我认为)…
int y = x | 〜int.MaxValue;
 cause int.MaxValue is 0111 1111 1111 1111 1111 1111 1111 1111 
所以
 ~int.MaxValue is 1000 0000 0000 0000 0000 0000 0000 0000 
因此任何int32或者将会在符号位置1(使其为负值),并保留所有其他位相同的…
编辑:实际上,由于1000 0000 0000 0000 0000 0000 0000 0000实际上是Minvalue,这也应该工作:
  int y = x | int.MinValue; // or, to do it to itself, x |= int.MinValue; 
只是为了更好玩:
 int myInt = Math.Min(hisInt, -hisInt); int myInt = -(int)Math.Sqrt(Math.Pow(Math.Sin(1), 2) + Math.Pow(Math.Cos(-1), 2)) * Math.Abs(hisInt); 
只是为了好玩:
 int negativeInt = int.Parse(String.Format("{0}{1}", "-", positiveInt.ToString())); 
更新 :这种方法的美妙之处在于,您可以轻松地将其重构为exception生成器:
 int negativeInt = int.Parse(String.Format("{0}{1}", "thisisthedumbestquestioninstackoverflowhistory", positiveInt.ToString())); 
 long negativeNumber = (long)positiveInt - (long)(int.MaxValue + 1); 
没有人说它必须是任何特定的负数。
尽pipe我在这里参加派对的时间已经晚了,但是我还是会用硬件时间里的一些有用的技巧加以注意。 所有这些都假设2是有符号数的恭维表示。
 int negate = ~i+1; int positiveMagnitude = (i ^ (i>>31)) - (i>>31); int negativeMagnitude = (i>>31) - (i ^ (i>>31)); 
也许这个?
 int n; .... some coding.... n = n<=0? n:0-n; 
乘以-1。
 int myInt = - System.Math.Abs(-5); 
 我使用myInt = -myInt; 
如此简单和容易
如果你想只有积极的
 myInt = myInt>0 ? myInt : -myInt; 
更简单的方法a = -a会帮忙
将数字从正数转换为负数,或将负数转换为正数:
 public static decimal Reverse(this decimal source) { return source * decimal.MinusOne; } 
  X=*-1可能不适用于所有的编译器…因为它读取的是一个“相乘”'SUBTRACT'1而不是NEGATIVE更好的是X=(0-X) ,[这是与X-=X ] 
使用二进制,并删除负责负号的最后一位。
或者使用二进制或将符号添加到数据types。
这个soln听起来可能荒谬和不完整,但我可以保证这是最快的方法。
如果你不试试我发布的post,可能会看起来很糟糕:D
例如对于int:
Int是32位数据types,所以最后一位(第32位)确定符号。
并且在32位中有一个值为0,其余为1.它会将负号转换为+ ve。
正好相反,或者在32位中有1位,其余为0。