js字符串转化为数字
最编程
2024-01-15 18:56:25
...
方法
将字符串转为数字的方法有3种
- 使用
Number
对字符串进行类型转换; - 使用
parseInt
将字符串转换为整数; - 使用
parseFloat
将字符串转换为整数或浮点数。
Number
Number
对字符串进行类型转换。
- 将空字符转换为数字0
- 忽略首尾部空格
- 识别小数和科学技术法
- 字符串中不能出现非法字符
parseInt
parseInt
方法将字符串转化为整数
- 空字符转换为NaN
- 忽略首尾部空格
- 不识别小数点和科学计数法
- 忽略数字后的非法字符
parseInt还支持第二个参数表示转换基数
parseInt(11, 2) // 3
二进制的11转换为10进制变成3
parseFloat
parseFloat
方法将字符串转换为数字
- 将空字符转换为NaN
- 忽略首尾部空格
- 识别小数和科学计数法
- 忽略数字后的非法字符
区别
方法 | 识别.字符 | 识别e字符 | 空字符 | 首尾部空格 | 非法字符 |
---|---|---|---|---|---|
Number | true | true | 0 | 忽略 | 转化为NaN
|
parseInt | false | false | NaN | 忽略 | 忽略 |
parseFloat | true | true | NaN | 忽略 | 忽略 |
例子
情况 | 例子 | Number | parseInt | parseFloat |
---|---|---|---|---|
空字符 | "" | 0 | NaN | NaN |
整数 | "10" | 10 | 10 | 10 |
数字后方有非法字符 | "1只" | NaN | 1 | 1 |
空格在前方 | " 10" | 10 | 10 | 10 |
空格在中间 | "1 1" | NaN | 1 | 1 |
空格在末尾 | "10 " | 10 | 10 | 10 |
以0开头 | "01" | 1 | 1 | 1 |
小数 | "0.1" | 0.1 | 0 | 0.1 |
小数点开头 | ".1" | 0.1 | NaN | 0.1 |
含有"e" | "2e1" | 20 | 2 | 20 |
"e"开头 | "e1" | NaN | NaN | NaN |
"e"结尾 | "1e" | NaN | 1 | 1 |
对其中几种特殊情况解答:
- 首尾部空格会被忽略,字符串中间的空格会被识别为非法字符,所以
Number('1 1') = NaN
- 对于".1",由于
parseInt
不识别小数点,第一个字符非法,转换为NaN
- 对于"2e1",由于
parseInt
不识别e
,忽略e
及之后字符,转换为2
- 对于"e1",由于不包含科学计数法的底数,
e
被识别为非法字符,全部转换为NaN
- 对于"1e",由于不包含科学计数法的指数,
e
被识别为非法字符,因此被Number
转换为NaN
,parseInt
和parseFloat
忽略e
,转换为2