1. 非数值类型转数值
使用Number()
转换时:
使用parseInt()
转换时:
var num1 = parseInt("10",2); //2 按二进制解析var num2 = parseInt("10",8); //8 按八进制解析var num3 = parseInt("10",10); //10 按十进制解析var num4 = parseInt("10",16); //16 按十六进制解析
使用parseFloat()
转换时:
parseFloat和parseInt的第一个区别在于它在解析字符串是是遇到一个无效的浮点数值字符为止,比parseInt多了.
解析十六进制数值时返回0
var num = parseFloat("0xA"); //0var num = parseInt("0xA"); //10
parseFloat函数没有第二个可以指定基数的参数,所以只解析十进制值。
如果字符串是个整数,则返回整数而不是浮点数var num = parseFloat("2.125e7"); //31250000
2. 使用toString()输出不同进制的数值
此条适用于整数,我们可以用toString()返回任意进制的整数。
var num = 10;alert(num.toString()); //"10"alert(num.toString(9)); //"11"alert(num.toString(16)); //"a"
3. 位操作符时注意NaN和Infinity
在对NaN和Infinity使用位操作符时,这两个数值都会被当成0来处理。 如果对于非数值应用位操作符,会先使用Number()函数将该值转换为一个数值。
还有一点要注意的就是负数的无符号右移,无符号右移是以0来填充空位,而不像有符号右移以符号位填充空位,所以对正数的无符号右移和有符号右移结果相同,但对负数就不同了。无符号右移操作会把负数的二进制码当成正数的二进制码,而且负数是以补码形式表示,因此会导致无符号右移后的结果相差非常大。
var oldValue = -64; var newValue = oldValue >>> 5
4. 特殊的数值运算
对于数值运算,如果有一个操作数为NaN,则结果为NaN。
新闻热点
疑难解答
图片精选