在c/c++中浮點數是否為0的判斷


在c/c++中,因為浮點數在內存中的表示是不精確的,會有很微小的誤差,所以判斷是否為0,就看它的絕對值是不是<=eps。

eps可以看成是epsilon的縮寫,可以用來表示一個無窮小的量,通常取eps的值為:1e-10~1e-8 之間。如:

#define eps   1e-10

原理:

IEEE754標准中,單精度浮點數(4byte)表示法:1bit符號位(S),8bit指數位(E,用階碼表示),23bit小數部分(尾數M)。雙精度浮點數(8byte)表示法:1bit符號位,11bit指數位(用階碼表示),52bit小數部分(尾數)。所以一個規格化的單精度浮點數x的真值為x=((-1)^S)*(1.M)*(2^(E-127));顯然,x永遠也不可能為絕對0。故在需要比較的時候,只能把它和一個很小的值比較,如果小於等於eps,則認為是0。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM