142 c#
您可以将负数转换为正数,如下所示:
int myInt = System.Math.Abs(-5);
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以使正数为负数?
bry*_*ook 420
怎么样
myInt = myInt * -1
Run Code Online (Sandbox Code Playgroud)
Jim*_*m W 226
int myNegInt = System.Math.Abs(myNumber) * (-1);
Run Code Online (Sandbox Code Playgroud)
JDu*_*ley 130
int negInt = -System.Math.Abs(myInt)
Run Code Online (Sandbox Code Playgroud)
Joe*_*ite 91
你做出其他任何负面的方式都是这样的:在它前面放一个负号.
var positive = 6;
var negative = -positive;
Run Code Online (Sandbox Code Playgroud)
Meh*_*ari 40
回复的每个人都会注意到
- Math.Abs(myInteger)
Run Code Online (Sandbox Code Playgroud)
要么
0 - Math.Abs(myInteger)
Run Code Online (Sandbox Code Playgroud)
要么
Math.Abs(myInteger) * -1
Run Code Online (Sandbox Code Playgroud)
作为一种保持负数为负数并将正数保持为负数的方法.
这种方法有一个缺陷.它不适用于所有整数.Int32类型范围从"-2 31 "到"2 31 - 1".这意味着还有一个"负面"数字.因此,Math.Abs(int.MinValue)抛出一个OverflowException.
正确的方法是使用条件语句:
int neg = n < 0 ? n : -n;
Run Code Online (Sandbox Code Playgroud)
这种方法适用于"所有"整数.
dri*_*iis 20
简单的方法:
myInt *= -1;
Run Code Online (Sandbox Code Playgroud)
tj1*_*111 16
int negInt = 0 - myInt;
Run Code Online (Sandbox Code Playgroud)
或者保证是负面的.
int negInt = -System.Math.Abs(someInt);
Run Code Online (Sandbox Code Playgroud)
Guf*_*ffa 11
要切换整数的符号,只需使用符号运算符:
myInt = -myInt;
Run Code Online (Sandbox Code Playgroud)
无论原始值是否为负,要使其为负,首先使用Abs方法:
myInt = -Math.Abs(myInt);
Run Code Online (Sandbox Code Playgroud)
编辑:对于正输入这是错误的...我错误地忘记了-x(2s-Complement值)中的其余位与+ x中的值的"相反",不一样.因此,仅更改符号位将不适用于正数.
我会留在这里为了目的......
或者是棘手的方式(我认为)......
int y = x | 〜int.MaxValue;
cause int.MaxValue is 0111 1111 1111 1111 1111 1111 1111 1111
Run Code Online (Sandbox Code Playgroud)
所以
~int.MaxValue is 1000 0000 0000 0000 0000 0000 0000 0000
Run Code Online (Sandbox Code Playgroud)
因此任何int32 Oreded将在符号位中加1(使其为负),并使所有其他位保持相同...
编辑:实际上,由于1000 0000 0000 0000 0000 0000 0000 0000实际上是Minvalue,这也应该有效:
int y = x | int.MinValue; // or, to do it to itself,
x |= int.MinValue;
Run Code Online (Sandbox Code Playgroud)
只为了更多的乐趣:
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);
Run Code Online (Sandbox Code Playgroud)
纯娱乐:
int negativeInt = int.Parse(String.Format("{0}{1}",
"-", positiveInt.ToString()));
Run Code Online (Sandbox Code Playgroud)
更新:这种方法的优点在于您可以轻松地将其重构为异常生成器:
int negativeInt = int.Parse(String.Format("{0}{1}",
"thisisthedumbestquestioninstackoverflowhistory", positiveInt.ToString()));
Run Code Online (Sandbox Code Playgroud)
尽管我在这里参加聚会的时间已经很晚了,但我还是会从我的硬件时代开始尝试一些有用的技巧.所有这些都假设2对有符号数字的恭维表示.
int negate = ~i+1;
int positiveMagnitude = (i ^ (i>>31)) - (i>>31);
int negativeMagnitude = (i>>31) - (i ^ (i>>31));
Run Code Online (Sandbox Code Playgroud)
我用 myInt = -myInt;
如此简单容易
如果你只想拥有积极的一面
myInt = myInt>0 ? myInt : -myInt;
Run Code Online (Sandbox Code Playgroud)