首頁 >後端開發 >C++ >為什麼我的浮點比較會產生意外結果?

為什麼我的浮點比較會產生意外結果?

Patricia Arquette
Patricia Arquette原創
2024-12-25 02:20:09347瀏覽

Why Does My Floating-Point Comparison Produce Unexpected Results?

浮點比較差異

在所提供的程式碼片段中:

int main()
{
    float a = 0.7;
    float b = 0.5;
    if (a < 0.7)
    {
       if (b < 0.5) printf("2 are right");
       else         printf("1 is right");
    }
    else printf("0 are right");
}

「0」的預期輸出片段中:

「0」的預期輸出片段中:

    「0」的預期輸出片段中:
「0」的預期輸出片段是正確」沒有獲得。相反,會印出「1 is right」。這種差異是由於浮點數固有的不精確性造成的。
double a = 0.7;
double b = 0.5;
    當與浮點操作數進行比較時,它們會自動提升為雙精度值。浮點數不如雙精度數精確,可能無法準確表示預期值。在內部轉換為雙精度型並失去精確度。 🎜>將float 改為double:
float a = 0.7f;
float b = 0.5f;

使用帶有“f”的浮點文字後綴:

兩種方法都確保操作數保持為浮點數,並避免提升為雙倍期間的精度損失。

以上是為什麼我的浮點比較會產生意外結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn