对待八进制
alert(parseInt("08")); // 显示 0
alert(parseInt("018")); // 显示 1
alert(parseFloat("08")); // 显示 8
alert(new Number("08")); // 显示 8
可以看出:
- parseInt 要认八进制,以 0 开头的字符串,被当作八进制,后面若有大于 7 的数,则该数及以后的内容被忽略。
- parseFloat 不认识八进制;
- new Number 不认识八进制。
对待十六进制
alert(parseInt("0x16")); // 显示 22
alert(parseFloat("0x16")); // 显示 0
alert(new Number("0x16")); // 显示 22
可以看出:
- parseFloat 要认十六进制,以 0x 开头的字符串,被当作十六进制。
- parseFloat 不认十六进制,x 及后面的内容被忽略。
- new Number 要认十六进制。
结论
- parseInt 要认八、十六进制;
- parseFloat 不认八、十六进制;
- new Number 不认八进制、认十六进制。