數值常用的屬性和方法
阿新 • • 發佈:2020-06-03
1、toString(數字轉字串)
toString方法可以接受一個引數,表示輸出的進位制。如果省略這個引數,預設將數值轉成十進位制的字串;否則就根據引數指定的進位制,將一個數字轉化成某個進位制的字串
toString方法只能將十進位制的數,轉為其他進位制的字串。如果要將其他進位制的數,轉回十進位制,需要使用parseInt方法
示例:
( 10 ).toString( ) // "10"
( 10 ).toString( 2 ) // "1010"
( 10 ).toString( 8 ) // "12"
( 10 ).toString( 16 ) // "a"
10["toString"]( 2 ) // "1010"
注意:上面程式碼中,數字一定要放在括號裡,這樣表明後面的點表示呼叫物件屬性。如果不加括號,這個點會被 JavaScript 引擎解釋成小數點,從而報錯。
2、toFixed(保留數字小數點後幾位)
toFixed( )方法將數字轉成指定位數的小數的字串
由於浮點數的原因,小數5的四捨五入是不確定的,使用的時候必須小心。
示例:
( 10 ).toFixed( 2 ) // "10.00"
( 10.005 ).toFixed( 2 ) // "10.01"
注意:上面程式碼中,數字一定要放在括號裡,這樣表明後面的點表示呼叫物件屬性。如果不加括號,這個點會被 JavaScript 引擎解釋成小數點,從而報錯。
3、toPrecision(保留幾位有效數字,結果是字串型別)
該方法用於將一個數轉為指定位數的有效數字,用於四捨五入時不太可靠,跟浮點數不是精確儲存有關。
示例:
( 12.15 ).toPrecision(3) // "12.2"
( 12.25 ).toPrecision(3) // "12.3"
( 12.35 ).toPrecision(3) // "12.3"
( 12.45 ).toPrecision(3) // "12.4"
4、parseInt(將字串轉為整數)
(1)如果字串頭部有空格,空格會被自動去除。
parseInt( "123" ) // 123
parseInt( " 81" ) // 81
(2)字串轉為整數的時候,是一個個字元依次轉換,如果遇到不能轉為數字的字元,就不再進行下去,返回已經轉好的部分。
parseInt( "8a" ) // 8
parseInt( "15px" ) // 15
(3)如果字串的第一個字元不能轉化為數字(後面跟著數字的正負號除外),返回NaN。
parseInt( "abc" ) // NaN
parseInt( ".3" ) // NaN
parseInt( "" ) // NaN
parseInt( "+" ) // NaN
parseInt( "+1" ) // 1
parseInt( "-1" ) // -1
所以,parseInt的返回值只有兩種可能,要麼是一個十進位制整數,要麼是NaN
(4)如果字串以0x或0X開頭,parseInt會將其按照十六進位制數解析。
parseInt( "0x10" ) // 16
(5)如果字串以0開頭,將其按照10進位制解析。
parseInt( "011" ) // 11
(6)該方法還可以接受第二個引數(2到36之間),表示被解析的值的進位制,返回該值對應的十進位制數。預設情況下,parseInt的第二個引數為10,即預設是十進位制轉十進位制。
parseInt( "1000" ,10) // 1000
parseInt( "1000" ,2) // 8
parseInt( "1000" ,6) // 216
parseInt( "1000" ,8) // 512
5、parseFloat( 將字串轉成浮點數 )
parseFloat( "3.14" ) // 3.14
parseFloat( "31.4ekdlf" ) // 31.4
parseFloat( "" ) // NaN
6、isNaN
isNaN方法可以用來判斷一個值是否為NaN
isNaN( NaN ) // true
isNaN( true ) // false
7、isFinite
isFinite方法返回一個布林值,表示某個值是否為正常的數值
除了Infinity、-Infinity、NaN和undefined這幾個值會返回false,isFinite對於其他的數值都會返回true。
示例:
isFinite(Infinity) // false
isFinite(-Infinity) // false
isFinite(NaN) // false
isFinite(undefined) // false
isFinite(null) // true
isFinite(-1) // true
8、數值的進位制
十進位制:沒有前導0的數值。
八進位制:有字首0o或0O的數值,或者有前導0、且只用到0-7的八個阿拉伯數字的數值。
十六進位制:有字首0x或0X的數值。
二進位制:有字首0b或0B的數值。
示例:
oxff // 255
0o377 // 255
0b11 // 3
如果八進位制、十六進位制、二進位制的數值裡面,出現不屬於該進位制的數字,就會報錯。
示例:
0xzz // 報錯
0o88 // 報錯
0b22 // 報錯
通常來說,有前導0的數值會被視為八進位制,但是如果前導0後面有數字8和9,則該數值被視為十進位制。
示例:
0888 // 888
0777 //511
9、整型,浮點型
Number.parseInt(10.05)
Number.parseFloat(10.05)
10、Number.isInteger()
用來判斷一個數值是否為整數(使用===判斷)
Number.isInteger(25) // true
Number.isInteger(25.0) // true
Number.isInteger(25.3) // false
Number.isInteger(true) // false
Number.isInteger(null) // false
Number.isInteger() // false
Number.isInteger('25') // false