关于parseInt()里的一些小坑
parseInt(string,radix)方法是将输入字符串转化为数值,两个输入参数中string为要转化的字符串,radix可省略,是浏览器以几进制来解读输入的string。
举几个例子就能够对该方法有基本的了解了,如下:
parseInt("123"); //123
parseInt("123ab123"); //输出123 因为出现字母所以该字母及之后的字符都不被解析
若输入字符串首位是0或者0x之外的数字,则在radix缺省的情况下,默认解读为10进制。
0X默认解读为16进制
parseInt("0x10"); //字符串以0x开头则将之后的数字按16进制解读,16进制的10也就是十进制的16, 因此输出为16
parseInt("0xa"); //10,要注意16进制包括0~9,a~f (也就是10~15),超出该范围的字符不被解读。
parseInt("0xg"); //NAN
这三个例子分别等价于 parseInt("0x10",16) parseInt("0xa",16) parseInt("0xg",16)
以0开头的默认解读为八进制,但是不同浏览器解读方式不同,
parseInt("011"); //chrome下输出为11也就是会忽略首位的0,将011当成10进制解读,别的浏览器未测试--
parseInt("011",8); //此时会输出正确的9
因为这个坑,所以建议需要以八进制解读时,带上第二参数radix并设置为8,以免出问题
parseInt("09",8); //八进制取值范围为0~7,不包括9,因此9不能被解读,这时相当于parseInt("0",8);输出0
最后有一个特殊情况:
parseInt("0.000000434"); //4
parseInt("0.00000434"); //0
造成这种情况的原因可能是因为:
document.write(0.000000434+"<br/>"); //4.34e-7
document.write(0.00000434+"<br/>");//0.00000434
当小数点后有6个或者以上的0时,会以科学记数法存储,所以--。
部分内容参考https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
最新文章
- Android Studio导入项目遇到的问题
- Python 元组
- css-文字和图片在容器内垂直居中实测。方法来源张鑫旭博客。
- Visual Studio插件
- UITableView常见 UI 问题总结
- tracer
- Nginx目录别名(Alias)支持PHP的配置
- tar解压去除文件夹
- 1 weekend110的复习 + hadoop中的序列化机制 + 流量求和mr程序开发
- Android4大组件
- Android getTopActivity的方法
- Jmeter+Ant+Jenkins接口自动化测试(二)_测试方案设计及jmeter脚本开发
- Saiku嵌入系统使用时传参数访问saiku(十六)
- 全国人口 信息(NCIIC)接口开发纪要
- $O(n+log(mod))$求乘法逆元的方法
- [3] 注解(Annotation)-- 深入理解Java:注解(Annotation)--注解处理器
- Java03-Java语法基础(二)运算符
- ss is one another utility to investigate sockets(特适合大规模tcp链接)
- mongodb带认证的副本集搭建
- Nginx搭建flv mp4流媒体服务器[转]
热门文章
- Prisma GraphQL 服务器 生产者 ";https://www.prisma.io";
- HTTP协议12-HTTPS
- Linux下安装VMware Tools(使虚拟机支持文件拖拽)
- 【原创】大数据基础之HDFS(2)HDFS副本数量检查及复制逻辑
- 二维前缀和好题hdu6514
- 如何连接LINUX服务器
- 【winform】userControl刷新父窗体的datagridview
- 从Github上将laravel项目拉到新开发环境
- 分布式文档存储数据库 MongoDB
- 最近公共祖先(LCA)的三种求解方法