js中如何把字符串转成数字

js中如何把字符串转成数字
最新回答
风吹萤火

2022-03-24 13:20:07

在 JavaScript 中,将字符串转换为数字有多种方法,以下是详细说明和示例:

1. Number() 函数
  • 功能:将字符串解析为数字(整数或浮点数)。
  • 特点

    若字符串无法解析为有效数字,返回 NaN。

    严格解析,不允许字符串末尾存在非数字字符(如 "123abc" 会返回 NaN)。

  • 示例:const num1 = Number("123"); // 123const num2 = Number("123.45"); // 123.45const num3 = Number("123abc"); // NaN
2. parseInt() 函数
  • 功能:解析字符串为整数(可指定进制,默认为 10)。
  • 特点

    忽略字符串开头的空格,从第一个非空格字符开始解析。

    遇到非数字字符时停止解析(如 "123abc" 返回 123)。

    支持进制转换(如 parseInt("0110", 2) 将二进制 0110 转为十进制 6)。

  • 示例:const num1 = parseInt("123"); // 123const num2 = parseInt("123.45"); // 123(忽略小数部分)const num3 = parseInt("123abc"); // 123const num4 = parseInt("0110", 2); // 6(二进制解析)
3. parseFloat() 函数
  • 功能:解析字符串为浮点数。
  • 特点

    类似 parseInt(),但会保留小数部分。

    仅解析第一个小数点,后续字符会被忽略(如 "123.45.67" 返回 123.45)。

  • 示例:const num1 = parseFloat("123.45"); // 123.45const num2 = parseFloat("123.45abc"); // 123.45const num3 = parseFloat("0.110"); // 0.11
4. 一元加号运算符 (+)
  • 功能:快速将字符串转换为数字。
  • 特点

    行为与 Number() 类似,但更简洁。

    字符串中的空格会被忽略(如 +" 123 " 返回 123)。

  • 示例:const num1 = +"123"; // 123const num2 = +"123.45"; // 123.45const num3 = +" 123 "; // 123const num4 = +"123abc"; // NaN
5. 其他方法(按需选择)
  • Math.floor() / Math.ceil():结合 Number() 或 + 使用,可对结果取整:const num = Math.floor(Number("123.9")); // 123
  • 位运算符(如 ~~):快速取整(仅适用于 32 位整数):const num = ~~"123.45"; // 123
如何选择方法?
  • 纯数字字符串:优先用 Number() 或 +(简洁高效)。
  • 含非数字字符的字符串:用 parseInt()(整数)或 parseFloat()(浮点数)。
  • 进制转换:必须用 parseInt(str, radix)。
  • 严格校验:用 Number() 或 +(避免意外截断)。
注意事项
  • NaN 处理:转换失败时返回 NaN,可用 isNaN() 检测。
  • 性能:+ 运算符通常最快,但可读性稍差。
  • 空格处理:+ 和 Number() 会忽略字符串两端的空格,但中间空格会导致 NaN。
完整示例const str1 = "42";const str2 = "42.5";const str3 = "42px";const str4 = " 42 ";console.log(Number(str1)); // 42console.log(parseInt(str2)); // 42console.log(parseFloat(str3));// 42console.log(+str4); // 42

根据实际需求选择合适的方法,确保转换结果符合预期。