非数值转换为数值

第一种: Number() 

是 转型函数,可用于任何数据类型

使用规则:

如果字符串包含数值字符,包括数值字符前面带加、减号的情况,则转换为一个十进制数值。

因此,Number("1")返回 1,Number("123")返回 123,Number("011")返回 11(忽略前面 的零)。

1. 如果字符串包含有效的浮点值格式如"1.1",则会转换为相应的浮点值(同样,忽略前面的零)。

2. 如果字符串包含有效的十六进制格式如"0xf",则会转换为与该十六进制值对应的十进制整 数值。

3. 如果是空字符串(不包含字符),则返回 0。  如果字符串包含除上述情况之外的其他字符,则返回 NaN。

例如:

 

 

 输出:

 

 

第二种: parseInt()

主要用于将字符串转换为数值。

字符串最前面的空格会被 忽略,从第一个非空格字符开始转换。

如果第一个字符不是数值字符、加号或减号,parseInt()立即 返回 NaN。

这意味着空字符串也会返回 NaN(这一点跟 Number()不一样,它返回 0)。

如果第一个字符 是数值字符、加号或减号,则继续依次检测每个字符,直到字符串末尾,或碰到非数值字符。

比如, "1234blue"会被转换为 1234,因为"blue"会被完全忽略。类似地,"22.5"会被转换为 22,因为小数 点不是有效的整数字符。

let num1 = parseInt("1234blue"); // 1234

let num2 = parseInt(""); // NaN

let num3 = parseInt("0xA"); // 10,解释为十六进制整数

let num4 = parseInt(22.5); // 22

let num5 = parseInt("70"); // 70,解释为十进制值

let num6 = parseInt("0xf"); // 15,解释为十六进制整数

 

parseInt()也接收第二个参数,用于指定底数(进制数)。

如 果知道要解析的值是十六进制,那么可以传入 16 作为第二个参数,以便正确解析: let num = parseInt("0xAF", 16); // 175

事实上,如果提供了十六进制参数,那么字符串前面的"0x"可以省掉: let num1 = parseInt("AF", 16); // 175

let num2 = parseInt("AF"); // NaN  没有第二个参数告诉它是十六进制  所以NaN

 

第三种:  parseFloat()。

parseFloat()函数的工作方式跟 parseInt()函数类似,都是从位置 0 开始检测每个字符。

同样, 它也是解析到字符串末尾或者解析到一个无效的浮点数值字符为止。

这意味着第一次出现的小数点是有 效的,但第二次出现的小数点就无效了,此时字符串的剩余字符都会被忽略。因此,"22.34.5"将转换 成 22.34。

 

 十六进制数值始终会返回 0。因为 parseFloat()只解析十进制值,因此不能指定底数

 

posted @ 2020-12-09 11:18  学渣不挂科  阅读(771)  评论(0)    收藏  举报