46 為什麼 NaN 不等於自身?

2021-08-15 19:26:35 字數 741 閱讀 3952

nan, 

它是用來表示是否屬於number型別的一種狀態: 是或否。而不是乙個確切的值。 

nan值一般會在什麼情況下出現呢?一般有兩種情況:

(1) 乙個表示式中如果有減號(-)、乘號(*) 或 除號(/) 等運算子時,js引擎會在計算之前試圖將運算子兩邊的變數轉化為number型別,如果轉化失敗,表示式將返回nan

(2) 直接使用 parseint, parsefloat 或 number 將乙個非數字的值轉化為數字時,表示式返回nan

1

2

3

4

5

6

7

"abc"-3

// nan

parseint

("abc"

)// nan

parsefloat

("abc"

)//nan

number

("abc"

)//nan

當乙個表示式返回了nan 時,表示該表示式中存在不可以轉化的變數,並返回了無效的結果,並不是返回了乙個確切的值。

如果非要說nan是乙個值得話,那麼 nan 就是除過數字的任意值,但絕不是確切的某乙個值!

如果你還不理解,我們還可以用正規表示式來描述nan值: [^d]

所以 nan != nan , 因為它是乙個範圍,而不能代表乙個確定的值

為什麼0 1 0 2不等於0 3

先看兩個簡單但詭異的 0.1 0.2 0.3 true 0.1 0.1 0.0100000000000000020.1加0.2為什麼就不等於0.3暱?要回答這個問題,得先了解計算機內部是如何表示數的。我們都知道,計算機用位來儲存及處理資料。每乙個二進位制數 二進位制串 都一一對應乙個十進位制數。1....

專案管理 付出為什麼不等於收穫?

有些人付出很多但收穫很少,也有些人付出很少卻獲益多多。這不符合古人所謂 天道酬勤 也不符合今人所言 能量守恆 好像無論從社會科學還是自然科學的角度,付出都應該等於收穫。為什麼我們看到的現象與此不符?那是因為我們忽略或者沒有看到其中的隱藏因素。如果用公式來表達付出與收穫之間的關係,應該是下面兩個公式 ...

在js中為什麼0 1 0 2不等於0 3

0.1 0.2 0.3 false原因在於在js中採用的ieee 754的雙精度標準,計算機內部儲存資料的編碼的時候,0.1在計算機內部根本就不是精確的0.1,而是乙個有捨入誤差的0.1。當 被編譯或解釋後,0.1已經被四捨五入成乙個與之很接近的計算機內部數字,以至於計算還沒開始,乙個很小的捨入錯誤...