Number
JavaScript的
Number
類型為雙精度IEEE 754 64位浮點類型。 數(shù)值范圍包括-2^53到2^53
。在JavaScript中正數(shù)0和負數(shù)0是相等的。
注意:當(dāng)數(shù)值超過number所能表示的范圍值的時候,則會被自動轉(zhuǎn)換成Infintity(正無窮)或-Infintity(負無窮)。此時將無法正常進行數(shù)學(xué)運算。為此提供了一個新的基礎(chǔ)數(shù)據(jù)類型BigInt
屬性、方法 | 作用 |
---|---|
Number.MIN_SAFE_INTEGER | number所表示的最小值 |
Number.MAX_SAFE_INTEGER | number所表示的最小值 |
Number.isNaN() | 檢查值是否是一個有效數(shù)字 |
Number.isFinite() | 檢查值是否是一個又窮數(shù) |
isNaN
在使用isNaN進行檢測的時候,如果檢測的值是非數(shù)字類型的值,則需要先把其轉(zhuǎn)換為數(shù)字類型,然后在進行檢測 把其它數(shù)據(jù)類型轉(zhuǎn)換為數(shù)字類型
// console.log(isNaN(1)); //=>false
// console.log(isNaN(NaN)); //=>true
// console.log(isNaN(Infinity)); //=>false
// console.log(isNaN('AA')); //=>true
// console.log(isNaN('12.5')); //=>false
// console.log(isNaN('12.5px')); //=>true
// console.log(isNaN([])); //=>false
// console.log(isNaN([10])); //=>false
// console.log(isNaN([10, 20])); //=>true
// console.log(isNaN({})); //=>true
// console.log(isNaN(null)); //=>false
// console.log(isNaN(undefined)); //=>true
// console.log(isNaN(Symbol(1))); //=>報錯
三種轉(zhuǎn)換數(shù)字類型的方式
Number()
Number是JS內(nèi)置的轉(zhuǎn)換方法,可以把其它數(shù)據(jù)類型“強制”轉(zhuǎn)換為數(shù)字類型
- 把字符串轉(zhuǎn)換為數(shù)字:一但字符串中出現(xiàn)非有效數(shù)字字符,則結(jié)果為NaN,只有都是有效數(shù)字字符,才能轉(zhuǎn)換為具體的數(shù)字,空字符串會轉(zhuǎn)換為0
- 把布爾轉(zhuǎn)換為數(shù)字:true轉(zhuǎn)換為1 false轉(zhuǎn)換為0
- 把空轉(zhuǎn)換為數(shù)字:null轉(zhuǎn)換為0 undefined轉(zhuǎn)換為NaN
- 不能把Symbol類型轉(zhuǎn)換為數(shù)字,否則會報錯
- 對象轉(zhuǎn)換為數(shù)字:先把對象轉(zhuǎn)換為字符串,再把字符串轉(zhuǎn)為數(shù)字
- 普通對象
- 數(shù)組對象
- 其余對象格式基本上都會變?yōu)閿?shù)字NaN
- 函數(shù)轉(zhuǎn)換為數(shù)字:結(jié)果都是NaN
// console.log(Number('12')); //=>12
// console.log(Number('12.5')); //=>12.5
// console.log(Number('12px')); //=>NaN
// console.log(Number('12.5.0')); //=>NaN
// console.log(Number(true)); //=>1
// console.log(Number(false)); //=>0
// console.log(Number(null)); //=>0
// console.log(Number(undefined)); //=>NaN
// console.log(Number(Symbol(13))); //=>Cannot convert a Symbol value to a number
// console.log(Number(function func() {}));
parseInt() / parseFloat()
他們是把字符串轉(zhuǎn)換為數(shù)字類型(如果處理的值不是字符串,需要先轉(zhuǎn)換為字符串然后在去轉(zhuǎn)換為number類型的)
從字符串最左邊開始查找,把找到的有效數(shù)字字符轉(zhuǎn)換為數(shù)字,一直遇到一個非有效數(shù)字字符為止,則結(jié)束查找
parseFloat比parseInt多識別一個小數(shù)點
// console.log(Number('12px')); //=>NaN
// console.log(parseInt('12px')); //=>12
// console.log(parseInt('12px24')); //=>12
// console.log(parseInt('width:12px')); //=>NaN
// console.log(parseInt('12.5px')); //=>12
// console.log(parseFloat('12.5px')); //=>12.5 parseFloat比parseInt多識別一個小數(shù)點
// console.log(Number(true)); //=>1
// console.log(parseInt(true)); //=>先把TRUE轉(zhuǎn)換為字符串"TRUE" parseInt('true') =>NaN
// console.log(parseInt(NaN)); //=>NaN
// console.log(Number(null)); //=>0
// console.log(parseInt(null)); //=> parseInt('null') =>NaN
// console.log(isNaN(Number(parseInt("0.8")))); //=>parseInt("0.8")->0 Number(0)->0 isNaN(0)->false
// console.log(Number('')); //=>0
// console.log(parseInt('')); //=>NaN