在JavaScript的实际开发中,字符串转数字是非常常见的操作,比如从输入框获取的用户输入是字符串格式,需要转为数字才能进行加减乘除等运算。不同的转换方法有不同的适用场景,下面逐一介绍。

一、使用Number()函数转换
Number()是JavaScript内置的转型函数,可以把任意类型的值转为数字,对于字符串的转换规则比较严格:如果字符串是纯数字格式(可以包含正负号和小数点),会转为对应的数字;如果字符串包含非数字字符(除了开头和结尾的空格),会返回NaN;空字符串或者只包含空格的字符串会转为0。
// Number方法转换示例 let str1 = "123"; let num1 = Number(str1); console.log(num1); // 输出123,类型为number let str2 = "123.45"; let num2 = Number(str2); console.log(num2); // 输出123.45,类型为number let str3 = "123abc"; let num3 = Number(str3); console.log(num3); // 输出NaN,包含非数字字符 let str4 = " "; let num4 = Number(str4); console.log(num4); // 输出0,空字符串或纯空格转为0 let str5 = "-456"; let num5 = Number(str5); console.log(num5); // 输出-456,支持正负号
二、使用parseInt()转换整数
parseInt()专门用于把字符串转为整数,它会从字符串的第一个非空格字符开始解析,直到遇到第一个非数字字符(小数点也会被当作非数字字符)就停止解析,返回已经解析到的整数部分。它还可以接收第二个参数,表示要解析的字符串的进制,比如16表示十六进制,10表示十进制。
// parseInt方法转换示例 let str1 = "123.78"; let num1 = parseInt(str1); console.log(num1); // 输出123,遇到小数点就停止解析 let str2 = "123abc456"; let num2 = parseInt(str2); console.log(num2); // 输出123,遇到非数字字符停止 let str3 = "abc123"; let num3 = parseInt(str3); console.log(num3); // 输出NaN,第一个非空格字符不是数字 let str4 = "0xff"; let num4 = parseInt(str4, 16); console.log(num4); // 输出255,按十六进制解析 let str5 = "1010"; let num5 = parseInt(str5, 2); console.log(num5); // 输出10,按二进制解析
三、使用parseFloat()转换浮点数
parseFloat()和parseInt()类似,但它会解析到第一个非数字字符(除了第一个小数点),可以保留小数部分,只能解析十进制数,没有第二个进制参数。如果遇到多个小数点,只会识别第一个,后面的会被当作非数字字符停止解析。
// parseFloat方法转换示例 let str1 = "123.45.67"; let num1 = parseFloat(str1); console.log(num1); // 输出123.45,第二个小数点停止解析 let str2 = "123.45abc"; let num2 = parseFloat(str2); console.log(num2); // 输出123.45,遇到非数字字符停止 let str3 = "abc123.45"; let num3 = parseFloat(str3); console.log(num3); // 输出NaN,开头非数字 let str4 = ".123"; let num4 = parseFloat(str4); console.log(num4); // 输出0.123,支持开头是小数点
四、隐式转换方式
除了上述显式转换方法,还可以通过一些运算触发隐式转换,比如给字符串加上一个空的数字0,或者用字符串减去0,或者用一元加号运算符,这些方式本质上和Number()的转换规则一致。
// 隐式转换示例 let str1 = "123"; let num1 = str1 - 0; console.log(num1); // 输出123,类型为number let str2 = "456"; let num2 = +str2; console.log(num2); // 输出456,一元加号触发转换 let str3 = "789"; let num3 = str3 * 1; console.log(num3); // 输出789,乘1触发转换 let str4 = "abc"; let num4 = str4 - 0; console.log(num4); // 输出NaN,无法转换时返回NaN
五、方法对比与选择建议
不同转换方法的适用场景不同,可以参考下面的对比表选择:
| 方法 | 适用场景 | 特点 |
|---|---|---|
| Number() | 需要严格转换,字符串必须是纯数字格式 | 空字符串转0,包含非数字字符返回NaN |
| parseInt() | 只需要整数部分,或者需要解析不同进制的字符串 | 忽略小数部分,支持进制参数 |
| parseFloat() | 需要保留小数部分的数值 | 只解析十进制,支持开头是小数点 |
| 隐式转换 | 简单场景快速转换 | 规则和Number一致,代码更简洁 |
在实际开发中,如果明确只需要整数,优先用parseInt;如果需要浮点数,用parseFloat;如果需要严格校验字符串是否为纯数字,用Number;简单场景可以用隐式转换提升代码简洁度。
JavaScript字符串转数字Number方法parseIntparseFloat修改时间:2026-06-03 00:38:14