㈠ c語言中比較實型變數data2和常數0是否相等為什麼用fabs(data2)<=1e-7
因為在c語言中實數是不確定的,比如實數0可能是0.000001所以不能用data2==0來判斷,如果這樣判斷就算data2是0也會返回false實數的有效位是6位,所以用fabs(data2)<=1e-7來判斷是准確的就是說如果比0.0000001還小的話那就是0
㈡ 假設在C語言中定義: float a; 那麼怎麼把a與0進行比較
如果要判定不等式的話,可以直接a < 0和a > 0
如果要判定等式的話,用fabs(a) < 1e-13 (數字只要夠小就行)
由於精度問題,a == 0 可能不能正確判定
㈢ 為什麼c語言中不直接將實數與0相比較
因為浮點數可能有誤差
關鍵問題不在這里,而在於浮點運算是不精確的,運算結果本該等0的地方,有可能實際算出是0點000幾。
㈣ c語言中為什麼不能直接把實數與零值進行比較
不是不能而是不準float是浮點數存的是近似值當用來表示0的時候有可能計算結果是0,但是由於精度問題,實際上存儲的是一個和0很接近的值而==只要不是完全相等就回是假於是用==判斷float有可能出錯。一般都是判斷差值的絕對值,低於某一個精度值,就可以認為是相等了。
㈤ c語言中如何精確判斷一個數是否等於零
//1整型
int i=2;
if(i==0)
printf("等於零");
else
printf("不等於零");
//2浮點型
float i=2;
if(fabs(i)<1e-6)
printf("等於零");
else
printf("不等於零");