parseInt中的转换细节
2015-10-13 22:33
267 查看
避免误用parseInt
parseInt是一个将字符串转换为整数的函数,与parseFloat(将字符串转换为浮点数)对应,这两种函数是JavaScript提供的两种静态函数,用于把非数字的原始值转换为数字。在开始转换时,parseInt会先查看位置0处的字符,如果该位置不是有效数字,则将返回NaN,不再深入分析。如果位置0处的字符是数字,则将查看位置1处的字符,并重复前面的测试,依此类推,直到发现非数字字符为止,此时parseInt()函数将把前面分析合法的数字字符转换为数值并返回。
parseInt("123abc"); // 123 parseInt("1.73"); // 1 parseInt(".123"); // NaN 1 2 3
代码laycode
- v1.1
浮点数中的点号对于parseInt来说属于非法字符,因此它不会被转换并返回,这样,在使用parseInt时,就存在潜在的误用风险。例如,我们并不希望parseInt("16")与parseInt("16 tons")产生相同的结果。如果该函数能够提醒我们出现额外文本就好了,但它不会那么做。
对于以0为开头的数字字符串,parseInt()函数会把它作为八进制数字处理,先把它转换为数值,然后再转换为十进制的数字返回。对于以0x开头的数字字符串, parseInt()函数则会把它作为十六进制数字处理,先把它转换为数值,然后再转换为十进制的数字返回。例如:
var d = "010"; //八进制 var e = "0x10"; //十六进制 parseInt(d); //8 parseInt(e); //16 1 2 3 4
代码laycode
- v1.1
如果字符串的第一个字符是0,那么该字符串将基于八进制而不是十进制来求值。在八进制中,8和9不是数字,所以parseInt("08")和parseInt("09")的结果为0,这个错误导致了在程序解析日期和时间时经常会出现问题。幸运的是,parseInt可以接受一个基数作为参数,这样parseInt("08",10)结果为8,parseInt("09",10)结果为9。因此,建议读者在使用parseInt时,一定要提供这个基数参数。
通过在parseInt中提供基数参数,可以把二进制、八进制、十六进制等不同进制的数字字符串转换为整数。例如,下面把十六进制数字字符串"123abc"转换为十进制整数。
parseInt("123abc",16); // 1194684
再如,把二进制、八进制和十进制数字字符串转换为整数:
相关文章推荐
- Item 39:明智地使用private继承 Effective C++笔记
- 我读过的最好的epoll讲解
- 选择排序——堆排序
- 字节流和字符流详解
- 文章标题
- 如何跳过Nexus 7二代的开机设置
- 黑马程序员——java基础之多线程
- java23种设计模式之适配器模式(Adapter)
- OC中的NSDate
- 讨论内外边距对行内元素是否起作用,则要对行内替换元素和行内非替换元素分别讨论:
- hdu5131 贪心
- hdu5137 枚举删点
- PIC驱动继电器
- [转]ArrayList和HashTable 使用
- 总结Java垃圾回收器的方法和原理
- jQuery 获取屏幕高度、宽度
- mac远程桌面连接无法验证您希望连接的计算机的身份
- Graphics View Framework 简介
- css选择器
- 浅析c++中的类型转换--static_cast