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(保留几位有效数字)
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" ) // 91
(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
方法还可以接受第二个参数(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