1.浮點數出現精度問題的原因:浮點
位元組數有效數字位
float46
double815
實際上一般選用double型別,double有15位有效數字若輸入的數字為16位則會有誤差。
int main()
2.怎樣才能減少誤差帶來的影響:
使用巨集定義乙個eps來判斷誤差:
#define eps 0.000001
(1)判斷a == b fabs(a-b) < eps
(2)判斷a != b fabs(a-b) > eps
(3)判斷a < b a-b < eps
(4)判斷a > b a-b > eps
#include#include#define eps 0.000001
int main()
if(fabs(a-b) > eps) //(2)
return 0;
}
#include#include#define eps 0.000001
int main()
if((a-b) > eps) //(4)
return 0;
}
以上為判斷a與b關係的方式。 浮點數精度問題
一 例子 首先我們去編譯器試試 double a 1.9 通過新增監視檢視a的值 會發現a的值是1.8999999 二 開始今天的學習 在最開始學c 的時候並沒有對浮點數進行很深入的學習,認為浮點不就是小數嘛,首先在c 的巨集裡面有 flt max 和 flt min 的定義,float是四位元組的...
C語言中魔性的float浮點數精度問題
如果你以前接觸過c語言,那麼對下面的這段 一定很熟悉 include int main void 相信很多人不用執行,能夠直接報出答案,f num1 21.75 f num2 13.45 f num1 f num2 35.2 無論是從常識還是理論角度都不難理解。下面我們執行一下程式,驗證我們的猜測正...
浮點數的精度問題
float 1bit 符號位 8bits 指數字 23bits 尾數字 double 1bit 符號位 11bits 指數字 52bits 尾數字 對於二進位制的小數 1.1 1 20 1 2 1 1 1 2 1.5 1.01 1 20 0 2 1 1 2 2 1 1 4 1.25 1.0011 1...