在 JavaScript 中,将字符串转换为数字有多种方法,以下是详细说明和示例:
1. Number() 函数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() 函数4. 一元加号运算符 (+)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根据实际需求选择合适的方法,确保转换结果符合预期。