2012-06-25 69 views
0

一個整數值比較我只是想比較保存在C雙可變雙號,然後將其與值1 比較例如:X時雙變量在C

double x; 
x = 1; 
if(x == 1) 
    call .... 

但即使具有值1,此條件評估爲false,因爲x保持值0.99999而不是1.

我該如何解決這個問題!

+0

演員來詮釋,也許? – Tudor

+4

當然,所有的時間最喜歡http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html – fvu

+0

編號如果'x'的值爲1,'x == 1'將返回true 。如果'x'接近1,但不等於1,則它將評估爲假。 –

回答

4

這是一個浮動,所以你需要採取的精度考慮: 如果(X < 1.000001 & & X> 0.99999)

+0

但是當我們有兩個值時,發生了什麼,我的意思是1,例如1.00000001,這兩個數字是不完全一樣的! – Hadi

+0

@哈迪,是的,但是你必須堅持這一點,因爲無論如何浮點數並不是精確地在計算機中表示的。 – unkulunkulu

+2

'fabs(x - 1)<0.000001'是這個更常見的成語 – unkulunkulu