JavaScript的資料型別(3)

江南之一葉發表於2016-10-29

今天談談JS中的數值型別---number.

JS中不管整數還是浮點數,統一歸於number型別(數值型別),不像Java那樣分為整形和浮點型,整形裡面又分為byte,short,int,long 型別,浮點數裡面又分為float,double型別,總之,JS中,數值都是number型別,可以用型別操作符typeof(x)來判斷,如果返回的是一個字串'number', 則表明x 就是number型別。

其實,JS中的數值都是浮點數,例如有:10===10.0 //true.

需要注意的有:
(1) NaN(Not a Number---非數值)是一種特殊的數值型別, typeof(NaN),得到的還是'number' 它不應該參與任何數值型別的運算。它和自己都不相等,無論NaN == NaN, 還是NaN === NaN,得到的都是false. 任何其它的數值型別和NaN進行運算,得到的都是NaN.

(2) 正無窮大表示為Infinity, 負無窮大表示為-Infinity, 它們也是特殊的number型別。

(3) 四則運算中任何一個數值型別除以0,得到Infinity, 但0/0會得到NaN, 這些也不必死記,需要時可以開啟Node的命令列驗證一下即可。

(4)不是所有的其它型別都可以轉化為數值型別,這個需要看情況而定。轉換時,如果要轉換為整數,可以用parseInt()函式,如果要轉換為浮點數,可以用parseFloat(), 注意沒有parseDouble()函式,也可以用函式Number(),但某些值和用parseInt()/parseFloat()函式有一些區別。拿不準時,可以先用Node命令列簡單測試一些,採用最合理的轉換函式,避免bug.

(5)最後請記住:浮點數的運算始終會有誤差,能用整數時,儘量用整數。

相關文章