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

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

当前回答

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

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

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

此答案中的表格

其他回答

这里是StrToNumber函数的修改版本。如前所述,

它允许在数值前面或后面出现可选符号。它执行检查以验证字符串的头部或尾部只有一个符号。如果发生错误,将返回“传递”的默认值。

这是一个可能的解决方案,比我之前的帖子更适合最初的问题。

静态StrToNumber(val:string,defaultVal:number=0):数字{ let result:number=defaultVal;如果(val==空)返回结果;如果(val.length==0)返回结果;val=值trim();如果(val.length==0)返回(结果);让符号:数字=1;//// . 从字符串中获取符号,并将结果放在“符号”局部变量中。符号自然默认为正值//1表示阳性,-1表示阴性。// . 从值中删除符号字符。//注意,在函数返回之前,结果乘以符号局部变量以反映符号。// . 多个符号字符的错误检查// . 错误检查以确保符号字符位于字符串的开头或结尾// { 让positiveSignIndex=val.indexOf('+');让negativeSignIndex=val.indexOf('-');设nTailIndex=val.length-1;////确保字符串中没有正负号//如果((正SignIndex!=-1)&&(负SignIndex!=-1))返回结果;////手柄阳性标志//if(positiveSignIndex!=-1){////确保只有一个符号字符//if((positiveSignIndex!=val.lastIndexOf('+')))返回结果;////确保标志在头部或尾部//if((positiveSignIndex>0)&&(positiveSignIndex<nTailIndex))返回结果;////从字符串中删除符号//val=val.replace(“+”,“”).trim();} ////手柄负号//if(negativeSignIndex!=-1){////确保只有一个符号字符//if((negativeSignIndex!=val.lastIndexOf('-')))返回结果;////确保标志在头部或尾部//if((negativeSignIndex>0)&&(negative SignIndex<nTailIndex))返回结果;////从字符串中删除符号//val=val.replace(“-”,“”).trim();符号=-1;} ////确保文本长度大于0// 如果(val.length==0)返回结果;} ////将字符串转换为数字//var r=+(<any>val);如果((r!=null)&&(!isNaN(r))){ 结果=r*符号;}返回(结果);}

打字方式如下:

Number('1234') // 1234
Number('9BX9') // NaN

如这里所回答的:https://stackoverflow.com/a/23440948/2083492

您可以遵循以下任一方式。

var str = '54';

var num = +str; //easy way by using + operator
var num = parseInt(str); //by using the parseInt operation 

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

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

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

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

常量myNumber=1200;//转换为十六进制值console.log(myNumber.toString(16))//将返回4b0//其他转换为十六进制的方法console.log(Math.abs(myNumber).toString(16))//将返回4b0//转换为十进制值console.log(parseFloat(myNumber.toString()).toFixed(2))//将返回1200.00

用于将其他格式转换为十进制的参考

二进制到十进制十六进制到十进制数字转换器