好家伙, 本篇內容為《JS高級程式設計》第三章學習筆記 1.Number類型 從名稱中我們可以得出,這是一個存放數值的類型, 不同的數值類型相應地也有不同的數值字面量格式 Number類型可以儲存不同進位的數(不常用就是了) 八進位:在數前加一個零("0"),後續的數字中不能有大於7的數值,否則八進 ...
好家伙,
本篇內容為《JS高級程式設計》第三章學習筆記
1.Number類型
從名稱中我們可以得出,這是一個存放數值的類型,
不同的數值類型相應地也有不同的數值字面量格式
Number類型可以儲存不同進位的數(不常用就是了)
八進位:在數前加一個零("0"),後續的數字中不能有大於7的數值,否則八進位無效
十六進位:在數字前加一個零x("0x"),後面不可跟隨超出十六進位的數,否則會十六進位無效
1.1.浮點值
要定義浮點值,數值中必須包含小數點,而且小數點後面必須至少有一個數字。
小數點前可以沒有數字,但推薦加上。
(看上去有些奇怪,但可行)
let a = 0.1;
let b = .1;
console.log(a,b);
因為存儲浮點值使用的記憶體空間是存儲整數值的兩倍,所以ECMAScript總是想方設法把值轉換為整數。
在小數點後面沒有數字的情況下,數值就會變成整數。
類似地,如果數值本身就是整數,只是小數點後面跟著0(如1.0),那它也會被轉換為整數,
let a = 10.0;
let b = 10.;
console.log(a, b);
1.2.科學計數法
使用科學計數法使數字表達更簡潔
其中在數字後面加上e10表示乘以10的十次方
同理,e-10表示十的負十次方
let a = 3.14e10; let b = 3.14e-10; let c =0.000005; let d =0.0000005; console.log(a, b); console.log(c, d);
有趣的是,當小數點後的零大於等於6個後,將會被以科學計數法表示
1.3.值的範圍
由於記憶體的限制,ECMAScript並不支持表示這個世界上的所有數值。
ECMAScript可以表示的最小數值保存在Number.MIN_VALUE 中,這個值在多數瀏覽器中是 5e-324;
可以表示的最大數值保存在Number.MAX_VALUE中,這個值在多數瀏覽器中是1.7976931348623157e+308。
如果某個計算得到的數值結果超出了 JavaScript可以表示的範圍,那麼這個數值會被自動轉換為一個特殊的 Infinity(無窮)值。
任何無法表示的負數以Infinity(負無窮大)表示,任何無法表示的正數以Infinity(正面不無窮大)表示。
如果計算返回正 Infinity 或負 Infinity,則該值將不能再進一步用於任何計算。這是因為Infinity 沒有可用於計算的數值表示形式。
要確定一個值是不是有限大(即介於JavaScript能表示的最小值和最大值之間),可以使用isFinite()函數,如下所示:
let result=Number.MAX_VALUE +Number.MAX_VALUE;
console.log(isFinite(result)); // false
雖然超出有限數值範圍的計算並不多見,但總歸還是有可能的。因此在計算非常大或非常小的數值時,有必要監測一下計算結果是否超出範圍。
註意 使用 Number.NEGATIVE_INFINITY和Number.POSITIVE_INFINITY 也可以獲 取正、負Infinity。
沒錯,這兩個屬性包含的值分別就是-Infinity和Infinity。
1.4.NaN(Not a Number)和Infinity
NaN是一個特殊數值,就像他的翻譯一樣-----"不是數字",
用於表示本來要返回數值的操作失敗了(比如說某某數除以零,但並不拋出錯誤)
比如說0除以零,但並不拋出錯誤,而是返回NaN,
而自然數除以0時,就是Infinity(無限)
console.log(1/0);
console.log(+0/-0);
1.4.1.isNaN()方法
isNaN()方法用於判斷一個數是否為NaN,(是否"不是數值"),
他首先會調用對象的valueOf()方法,然後再確定是否可以轉換為數值.
如果不能,再調用toString()方法.並測試其返回值
console.log(isNaN(0/0));
console.log(isNaN(100));
console.log(isNaN("true")); //true 不可以被轉化為數字一
console.log(isNaN(true)); //false 可以被轉化為數字一
1.5.數值轉換
Number()方法可以將非數值轉換為數值,
Number()方法可用於任何類型數據
(1)布爾值————true轉換為1,false轉換為0
(2)數值————直接返回(你是來找茬的把?)
(3)null————直接返回0
(4)undefined————返回NaN
(5)字元串————
1.如果有進位表示字元與數字組合,那麼轉換為相應進位的數字
2.空字元串,返回0,
3.包含其他任何非進位表示字元,返回NaN
(6)對象————調用valueOf方法,並按照上述規則轉換返回的值,如果轉化的結果是NaN,
則調用toString()方法,再按照字元串轉換規則轉換
來看看例子:
let a = Number(true); let b = Number(87); let c = Number(null); let d = Number(undefined); let e = Number("panghu"); console.log(a, b); console.log(c, d, e);