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

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

Patricia Arquette
發布: 2024-12-25 02:20:09
原創
346 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板