1. 程式人生 > >判斷兩個(float)變數x,z是否相等 以及和0值比較方法

判斷兩個(float)變數x,z是否相等 以及和0值比較方法

 浮點數的表示是不精確的,不能直接比較兩個數是否完全相等,一般都是在允許的某個範圍內認為像個浮點數相等,如有兩個浮點數a,b,允許的誤差範 圍為1e-6,則abs(a-b)<=1e-6,即可認為a和b相等。還有一種方法就是擴大再取整,比如a=5.23,b=5.23,直接比較 a==b一般為false,但是a和b都擴大一百倍,然後強制轉換為int型別,再用==比較就可以了
float型變數和“零值”比較的方法:
const float EPSINON = 0.000001;
if ((x >= - EPSINON) && (x <= EPSINON))
浮點型變數並不精確,其中EPSINON是允許的誤差(即精度),所以不可將float變數用“==”或“!=”與數字比較,應該設法轉化成“>=”或“<=”形式。如果寫成if (x == 0.0),則是錯誤的。
因為1.0在計算機中可能存為0.999999或1.00001等,很難恰好是1.0