浮點數小知識點

2021-09-11 14:32:00 字數 776 閱讀 3638

浮點數只有在能夠表達整數和二次冪的情況下才能不損失。否則如何進行對比可以採取

[c++]

fabs(a-b) < epsion (目標精度)

符號位 階碼 尾數 0 10000110 01100000001000000..

等價於 1.01100000010000 * 2^(10000110^2 - 127)

首先將二進位制數進行規格化處理,只取小數點後面的數字存放到尾數區。

將最高位去掉,並擴充套件為23位尾數

求階碼,如果指數部分為7,則移碼表示為127+7=134

將符號位,階碼與尾數合併起來,最終得到浮點數的表達方式。

浮點數的精度是由尾數決定的 ,浮點數的取值範圍是由階碼的尾數決定的

inline

static

bool

isdefined

(double x)

//將浮點數轉為整型64位指標,然後獲取值並與7ff的條件進行與運算,判斷是否觸發下面nan判斷條件。

inline

static

bool

isundef

(double x)

複製**

這段**是在檢查浮點數前15位的階碼是否都為1,為什麼這麼檢查取決下面的這個條件。

二進位制的0x7ff0000000000001l ~ 0x7fffffffffffffffl 和 0xfff0000000000001l ~ 0xffffffffffffffffl 之間的數值被定義為nan型別,類似正無窮大和負無窮小。

Python 浮點數的冷知識

讀者們可以先思考下 若兩個元組相等,即 a b 且 a is b,那麼相同索引的元素 如 a 0 b 0 是否必然相等呢?若兩個物件的 hash 結果相等,即 hash a hash b 那麼它們是否必然相等呢?答案當然都為否 不然就不叫冷知識了 大家可以先嘗試回答一下,然後再往下看。思考分割線 好...

Python 浮點數的冷知識

本週的pycoder s weekly上分享了一篇小文章,它裡面提到的冷知識很有意思,我稍作補充,分享給大家。它提到的部分問題,讀者們可以先思考下 答案當然都為否 不然就不叫冷知識了 大家可以先嘗試回答一下,然後再往下看。思考分割線 好了,先來看看第乙個問題。兩個相同的元組 a b,它們有如下的關係...

Python 浮點數的冷知識

它提到的部分問題,讀者們可以先思考下 若兩個元組相等,即 a b 且 a is b,那麼相同索引的元素 如a 0 b 0 是否必然相等?若兩個物件的 hash 結果相等,即 hash a hash b 那麼它們是否必然相等呢?答案當然都為否 不然就不叫冷知識了 大家可以先嘗試回答一下,然後再往下看。...