寫出float x 與「零值」比較的if語句

2021-09-24 20:53:33 字數 697 閱讀 4298

請寫出 float x 與「零值」比較的 if 語句:

const float epsinon = 0.00001;

if ((x >= - epsinon) && (x <= epsinon)

不可將浮點變數用「==」或「!=」與數字比較,應該設法轉化成「>=」或「<=」此類形式。

乙個區間內有無限個實數,因此計算機的浮點型別不能表示所有數,浮點數通常只是實際值的近似值,如5.0可能被儲存為4.99999。因此兩個浮點數比較時,只要兩數之間的差距小於一定區間,就可以認為它們是相等的。這個區間大小按實際情況確定。

以下內容引用自林銳《高質量c/c++**編寫指南》

4.3.3 浮點變數與零值比較

? 【規則4-3-3】不可將浮點變數用「==」或「!=」與任何數字比較。

千萬要留意,無論是float還是double型別的變數,都有精度限制。

所以一定要避免將浮點變數用「==」或「!=」與數字比較,

應該設法轉化成「>=」或「<=」形式。

假設浮點變數的名字為x,應當將

if (x == 0.0) // 隱含錯誤的比較

轉化為

if ((x>=-epsinon) && (x<=epsinon))

其中epsinon是允許的誤差(即精度)。

與零值比較

當通過用if 值 0 進行比較的時候 要看這個值是什麼型別的 具體如下 1.當值為 int,char型的時候 應用 if int val 0 或者 if int val 0 2.當值為指標變數的時候 應用if null p 或者if null p 注 null最好寫在左邊 因為如果在右邊的話容易寫成...

與零值比較

以下摘自 林銳 高質量c c程式設計指南 布林變數與零值比較 不可將布林變數直接與true false或者1 0進行比較。假設布林變數名字為flag,它與零值比較的標準if語句如下 if flag 表示flag為真 if flag 表示flag為假 整型變數與零值比較 應當將整型變數用 或 直接與0...

變數與零值比較

l 不可將布林變數直接與true false或者1 0進行比較。根據布林型別的語義,零值為 假 記為false 任何非零值都是 真 記為true true的值究竟是什麼並沒有統一的標準。例如visual c 將true定義為1,而visual basic則將true定義為 1。假設布林變數名字為fl...