字符串转数字常用方法: -,*,/,>>, <<,>>>,~~,parseInt,parseFloat,一元操作符+。这些转换方法都会默认对字符串进行trim()操作。
方法简单分类:
1. -,*,/,一元+操作符,Number()
将这几个分为一类是因为对非数值应用这几个操作符时,都会隐式调用Number(),Number()对字符串的转换规则如下(引用红宝书原文):
·如果字符串中只包含数字(包括正负号),将其转为十进制(忽略前置0)
·如果字符串中只包含有效浮点格式,转为对应浮点数值(忽略前置0)
·如果字符串以0x开头并包含有效的十六进制格式(整数),转换为同等大小十进制整数值
·空字符串为0
·字符串包含以上格式外的,返回NaN
简单列举一下Number方法:
Number()// 0Number(0xa)//10Number(00123)//123Number(00123a)//NaN
2. 位运算 >>(右移),<<(左移),>>>(无符号右移),~~
将这几个分为一类是因为它们都对字符串的32位2进制数进行位运算。只包含数字或者以0x开头并包含有效的十六进制格式(整数)这几个操作符有效,别的返回0。简单分析这几个方法:
·~(按位非操作符)
将数值转换为32位二进制数按位取反,~n的值与(-n-1)的值相等,eg:
~25//-26~-26//25
·>>(右移)<<(左移)
将数值32位向右或向左移动(不包括符号位),向右移左边补零,向左移右 边补零,eg:
2<<5// 64-2<<5// -6464>>5// 2-64>>5//-2
·>>>(无符号右移)
将数值32位向右移动,正数时结果与右移相同,负数时,先求其绝对值,绝对值反码加上1得出补码,然后右移,eg:
64>>>5//2-2>>>22//1023简单分析下负数的无符号右移操作:-2绝对值的32位表示:00000000000000000000000000000010反码:11111111111111111111111111111101补码:11111111111111111111111111111110右移22位:00000000000000000000001111111111//1023
3.parseInt, parseFloat(这里只分析parseInt)
·默认基数为10
·第一个字符为有效数值时(不包括正负号0),解析至无效数值(基数为16时非a-f),eg:
parseInt(12a)//12parseInt(12a,16)//298
·第一个字符为非数值时,返回NaN,有前置0时返回0,eg:
parseInt(a)//NaNparseInt(0a)//0
·0x开头包含有效16进制格式,转换为同等大小十进制数
parseInt与Number有点相似,但是parseInt能部分解析和根据基数转换。parseFloat方法与parseInt方法比较相似,没有基数。
声明:本文部分素材转载自互联网,如有侵权立即删除 。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容