※ 引述《a27839579 ()》之銘言:
: 各位大大
: 關於float的精度問題
: 課本上說float的精度在小數點後六位,也就是說最小可以表示到0.000001(10^-6)
: 但IEEE754的格式,最小的正數如下
: 0 00000000 00000000000000000000000
: 既為1*2^-127
: 其結果化成10進位為2^-127,比10^-6小那麼多
: 是我對精度的理解錯了嗎
: 因為課本上寫是因為IEEE格式小數占了23bit,
: 2^23=8388608,比10^6還小,但比10^7大
: 麻煩各位!
因為精確度和最小正數是兩回事
你應該知道浮點數其實就只是二進位的科學記號而已
精確度其實就是科學記號概念當中的有效位數這回事
或者講精確一點就是我在 #1RePAc02 提到的 ulp 這個詞的意思
而最小正數只不過是科學記號的次方數達到最小的數字而已
另外, IEEE754 float 的最小正數不是你那個喔
全部 0 的這個數表示的就是 0.0f 這個浮點數
最小的正規化正數是 0 00000001 00000000000000000000000 即是 2^-126
次方欄位全部 0 的那些是非正規化的數, 表示規則是不一樣的