2010-06-05 74 views
2

如何更改數字的符號?翻轉數字的符號的功能

abs();當輸入爲正值時不會返回負值,是正確的嗎?我需要相反的標誌。

+0

'Math.Abs​​' ....? – kennytm 2010-06-05 20:11:07

+2

是關於.net或C++標準庫的問題? – 2010-06-05 20:12:51

+1

乘以-1會出現什麼問題?基本的算術。 – Oded 2010-06-05 20:20:39

回答

8

-1只需乘:

double d = 1.2345; 
double opposite = d * -1; 
+0

哇@最簡單的答案如何解決 我正在裝飾字符串解析器添加或刪除 - – Smoka 2010-06-05 20:27:54

+5

爲什麼不是'對面= -d;'? – GManNickG 2010-06-05 21:37:17

1

結賬Math.Abs(回答以前版本的問題)。

使用負號:

var answer = -amount; 
-1

在C++中,簡單地abs(x)這是math.h
這是Absolute Value功能。

+1

實際上'abs'在''中被定義,並被重載爲'int'和'double'。在''中,您會發現'fabs',它被重載爲'float','double'和'long double'。 – GManNickG 2010-06-05 20:17:03

11

多德。減去。

double d = 1.1234; 
double opposite = -d; 
1

這是太明顯了:

n = -n 

你應該使用:

n = ~--n; 

..或者,如果你喜歡或按位,用途:

n = (0xffffffff^n) + 1; 

......如果這個+1對你來說太明顯了,這肯定是下注:

n ^= 0xffffffff; 
int m; 
for (m = 1; m != 0 && ((n & m) != 0); m <<= 1); 
n |= m; 
if (m == 0) n = m; 
else for (m >>= 1; m != 0; n ^= m, m >>=1); 

......還有還有誰想要確保沒有他們的處理能力的人的選擇處於閒置:

public int invert(int n) { 
    Random r = new Random(); 
    while (true) { 
    int s = r.nextInt(); 
    if ((s + n) == 0) { 
     return s; 
    } 
    } 
} 
+0

高級數學+1。 – Hut8 2010-07-23 19:30:40