浮點型 比較

問題描述

  • 今天在寫Qt代碼時,涉及到判斷兩個double類型的大小,在判斷a1==a2條件判斷時,相等大小的兩個double類型的數永遠爲false,導致代碼邏輯出錯。經過半天的調試,發現相等的兩個double類型的數,它們的差不等於零,兩數之差爲一個小數點前後共16位的一個數。

記錄

  • 浮點數在計算機中的存儲涉及到精度問題,float類型的數小數點前後一共6位,double類型的數小數點前後一共16位。當涉及到的轉換大於相應的位數時,浮點型的數會出現精度丟失問題。同時,值相等的兩浮點數判斷不能使用==,它們兩的值比較結果是個非零的數,條件判斷爲false。當需要兩個浮點型的數進行相等判斷時,可以令兩數之差的絕對值小於某個數來進行判斷,例如:abs(a1-a2)<0.000001
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章