C Primer 學習筆記 浮點數精度問題

2021-08-14 05:10:19 字數 414 閱讀 3220

之前做過lff solver的時候遇到了浮點數的精度問題,因為浮點數計算到一定的精度之後的計算結果就全靠運氣了。

這個本身是由於浮點數本身是按照科學計數法來儲存的,在座標軸上的分布是很不均勻,越靠近0浮點數越密集,越遠離0浮點數越稀疏,所以在遠離0的大的浮點數存在大數吃掉小數的情況,那麼浮點數的精度(解析度)在座標軸上不同的位置也是不一樣,越靠近0,精度越高,反之越低。

那麼在計算機制單精度float和雙精度double的一般的精度是多少呢?一般來說float的精度是1e-6,double是1e-10,也就是說當兩個浮點數的距離小於這個精度之後就可以認為a和b是相等的,所以浮點數的等於運算也要注意這個情況,不可以茫然的直接使用==來判定浮點數的等於與否

其實有時候我們使用雙精度求解出來的結果再重新代入相關過程去重新就散,結果可能不對,這個時候就是浮點數精度的問題

浮點數學習筆記

乙個機器浮點數由階碼和尾數及其符號位組成 尾數 用定點小數表示,給出有效數字的位數,決定了浮點數的表示精度 階碼 用定點整數形式表示,指明小數點在資料中的位置,決定了浮點數的表示範圍。2 浮點數的標準格式 e.m 為便於軟體移植,使用 ieee 電氣和電子工程師協會 標準 ieee754 標準 尾數...

浮點數筆記

c 中共有3種浮點型別 float double和long double。其中float一般為32位,double為64位,long double 為64位以上。範圍 float和double的具體區別為 float 1bit 符號位 8bits 指數字 23bits 尾數字 double 1bit...

學習筆記 浮點數的表示

一 二進位制定點法 如 0.011 那麼它表示1 8 2 8 3 8 可以看出它並不能精確地表示每乙個小數值,在不提高位的情況下只能盡量選擇最接近的值。比如1 5,十進位制可以表示為0.2,但2進製不能精確表示。二 ieee浮點法 公式 v 1 s m 2 e v表示數值。s表示符號,s 0時為正,...