给定一个数字的字符串表示,如何在TypeScript中将其转换为数字类型?

var numberString: string = "1234";
var numberValue: number = /* what should I do with `numberString`? */;

当前回答

如这里的其他答案所示,有多种方法进行转换:

Number('123');
+'123';
parseInt('123');
parseFloat('123.45')

不过,我想再提一件关于parseInt的事情。

使用parseInt时,始终传递基数参数是有意义的。对于十进制转换,即10。这是参数的默认值,因此可以省略它。对于二进制,它是2,十六进制是16。实际上,2和36之间的任何基数都有效。

parseInt('123')         // 123 (don't do this)
parseInt('123', 10)     // 123 (much better)

parseInt('1101', 2)     // 13
parseInt('0xfae3', 16)  // 64227

在一些JS实现中,parseInt将前导零解析为八进制:

尽管ECMAScript 3不鼓励使用ECMAScript5,但许多实现将以前导0开头的数字字符串解释为八进制。以下内容可能有八进制结果,也可能有十进制结果。始终指定基数以避免这种不可靠的行为。-多目标网络

代码变得更清晰是指定基数参数的一个很好的副作用。

因为parseFloat只解析基数为10的数字表达式,所以这里不需要基数参数。

更多信息:

为什么我们需要使用基数?(SO问题)所以回答“parseInt()和Number()之间的区别是什么?”

其他回答

Typescript中有parseInt()、parseFloat()和Number()等内置函数,您可以使用它们。

使用=>convertstring(“10.00”)调用函数

parseFloat(string)=>可用于转换为float,toFixed(4)=>小数位数

parseInt(str)=>可用于转换为整数

convertstring(string){
    let number_parsed: any = parseFloat(string).toFixed(4)
    return number_parsed
}

字符串到数字的转换:

在Typescript中,我们通过以下方式将字符串转换为数字:

parseInt():此函数接受两个参数,第一个是要解析的字符串。第二个是基数(数学数字系统中的基数,例如十进制为10,二进制为2)。然后返回整数,如果第一个字符不能转换为数字,则返回NaN。parseFloat():将要解析的值作为参数,并返回一个浮点数。如果无法将值转换为数字,则返回NaN。+运算符:适当使用该运算符时,可以将字符串值强制转换为数字。

示例:

/*解析Int*///请注意,返回的是一个整数,因此它将舍入该数字console.log(parseInt('51.023124'));//parseInt将“截断”字符串中非数字的任何部分console.log(parseInt('5afe1234'));//当字符串以非数字NaN开头时,返回console.log(parseInt('z123'));console.log('--------');/*parseFloat*///将字符串解析为数字并保持数字的精度console.log(parseFloat类型('1.12321423'));//parseFloat将“截断”字符串中非数字的任何部分console.log(parseFloat('5.5abc'));console.log('--------');/*+运算符*/让myString='12345'console.log(typeof+myString);让myOtherString='10ab'//+运算符不会截断任何“非数字”字符串部分,并返回NaNconsole.log(+myOtherString);

使用哪种?

如果要将字符串转换为整数,请使用parseInt()。但是,数据类型仍然是浮点数,因为TS中的所有数值都是浮点值。当需要指定要解析的数字的基数时,也可以使用此方法。当需要将字符串解析为浮点数时,请使用parseFloat()。可以在字符串之前使用+运算符将其强制转换为浮点数。这样做的优点是语法非常简短。

typescript需要知道我们的var a将是Number | | String

export type StringOrNumber = number | string;

export function toString (v: StringOrNumber) {
 return `${v}`;
}


export function toNumber (v: StringOrNumber) {
 return Number(v);
}

export function toggle (v: StringOrNumber) {
 return typeof v === "number" ? `${v}` : Number(v);
}

就像在JavaScript中一样,您可以使用parseInt或parseFloat函数,或者简单地使用一元+运算符:

var x = "32";
var y: number = +x;

所有提到的技术都将具有正确的类型,并将正确解析简单的十进制整数字符串(如“123”),但对于其他可能的情况(如“123.45”)和角点情况(如null),它们的行为会有所不同。

此答案中的表格