2011-10-21 50 views
3

我試圖計算的東西,並要檢查,如果兩個數值之間的差大於10^-10小。它沒有工作,所以我用std::cout << (double)(10^-10)和它打印-4。這是正確的行爲?我怎麼能改變它,以便它實際上導致0.0000000001爲什麼(10 ^( - 10))== -4

+5

如果你想冪,你用'的std ::從''(或者,正如我剛纔從user786653,科學記數法所看到的)pow'。你在'10 ^( - 10)'中做的是按位XOR。 – birryree

+1

儘管如此,我很難爲它返回-4。 Dec 10應該是bin 00001010,dec -10 = 11110100,而10 ^( - 10)應該是11111110(-2)。假設2的補碼,但這實際上是普遍的。 – MSalters

回答

20

^是排他性的或在C.對於常量,你可能想要使用scientific notation1e-10。對於不同的指數std::pow,正如另一個答案所說,是解決方案。

+0

最簡單,最簡單的解決方案。 –

+0

哇,太快了!我認爲我會這樣做,因爲埃德說它看起來是最簡單和最簡單的。感謝大家。 – fabian789

+1

+1科學記數法。整數字面量將不需要涉及函數調用。 –

3

^是XOR。

使用std::pow爲指數:

std::cout << std::pow(10.0, -10); 
5

^操作是按位異或操作;它不會求冪。您可以改用<cmath>中的pow功能。