之前关于字符串转数字只知道parseInt函数,但是如果是小数怎么办呢?
今天总结一下关于字符串转数字的方法:
1. Number()
2. parseInt()
3. parseFloat()
用法:
1. Number()方法
- 如果字符串只包含数字,则将其转换为十进制数值,即 "123" 会变成 123
- 如果字符串包含十六进制格式,例如 "0xf" ,则将其转换为相同大小的十进制整数值
- 如果字符串为空,转换为 0
- 如果是上述格式之外的字符,转换为 NaN
const str = '123';
const str1 = '0xf';
const str2 = '';
const str3 = 'a';
const str4 = '123aa';
console.log(Number(str)); //123
console.log(Number(str1)); //15
console.log(Number(str2)); //0
console.log(Number(str3)); //NaN
console.log(Number(str4)); //NaN
2.parseInt()方法
处理整数常用 parseInt(),parseInt() 转换字符的时候,会识别字符是否符合数值模式,它会忽略字符串前面的空格,从第一个非空格字符开始解析,如果是非数字符号或正负号,则返回 NaN 。如果第一个非空字符是数字符号或正负号,那么会继续解析,直到解析完或遇到非数字符号,比如 1234blue 会被转换成 1234, 但是需要注意的是,小数点并不算是数字符号,所以 22.5 会被解析为 22。同时也能解析八进制或十六进制的数。
var num1 = parseInt("1234blue"); //1234
var num2 = parseInt(""); //NaN
var num3 = parseInt("22.5"); //22
var num4 = parseInt("070"); //56(八进制数)
var num5 = parseInt("0xf"); //15(十六进制数)
3.parseFloat()方法
与 parseInt() 类似,也是从第一个字符开始解析,但是小数点是有效的,因为 parseFloat() 解析的不是数字符号,而是浮点数字字符,但第二个小数点就无效了。比如 "22.34.5" 会背转换为 22.34。需要注意的是 parseFloat() 只能解析十进制的数字。
var num1 = parseFloat("1234blue"); //1234
var num2 = parseFloat("22.5"); //22.5
var num3 = parseFloat("22.34.5"); //22.34
var num4 = parseFloat("0xA"); //0
网友评论