TypeScript将字符串转换为数字

TypeScript Converting a String to a number

有没有人建议过如何将字符串转换为typescript中的数字?

1
2
3
4
5
6
7
8
9
var aNumber : number ="1"; // --> Error

// Could this be done?
var defaultValue = 0;
var aNumber : number ="1".toInt32(defaultValue);

// Or ..
var defaultValue = 0;
var aNumber : number = StringToInt("1", defaultValue);

更新:我做了一些额外的困惑,我想出的最好的沙发:var anumber:number="(1")*1;

检查字符串是否为数字:在typescript中,如何检查字符串是否为数字。


您可以使用parseIntparseFloat函数,也可以简单地使用一元+运算符:

1
2
var x ="32";
var y = +x; // y: number


这样做的排版方式是:

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

回答如下:https://stackoverflow.com/a/23440948/2083492


对于我们的角型用户:

在模板中,Number(x)parseInt(x)抛出错误,+x没有效果。有效铸件为x*1x/1


在阐述Ryan所说的内容时,typescript包含了一般的javascript习语。

1
2
3
var n = +"1"; // the unary + converts to number
var b = !!"2"; // the !! converts truthy to true, and falsy to false
var s =""+3; // the""+ converts to string via toString()

javascript类型转换中所有有趣的深入细节。


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

1
2
3
4
Number('123');
+'123';
parseInt('123');
parseFloat('123.45')

不过,我想在EDOCX1[0]上再提一件事。

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

1
2
3
4
5
parseInt('123')         // 123 (don't do this)
parseInt('123', 10)     // 123 (much better)

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

那么,parseInt函数解析字符串以将其转换为数字。在一些JS实现中,parseInt将前导零解析为八进制:

Although discouraged by ECMAScript 3 and forbidden by ECMAScript 5, many implementations interpret a numeric string beginning with a leading 0 as octal. The following may have an octal result, or it may have a decimal result. Always specify a radix to avoid this unreliable behavior.

— MDN

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

由于parseFloat只解析基数为10的数值表达式,因此这里不需要基数参数。

更多关于这一点:

  • 为什么我们需要使用基数?(所以问题)
  • 那么回答"parseInt()和number()之间的区别是什么?"

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

1
2
3
4
var str = '54';

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


字符串到数字的转换:

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

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

实例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*    parseInt   */

// note that a whole number is returned, so it will round the number
console.log(parseInt('51.023124'));

// parseInt will 'cut off' any part of the string which is not a number
console.log(parseInt('5adfe1234'));

// When the string starts with non number NaN is returned
console.log(parseInt('z123'));

console.log('--------');

/*    parseFloat   */

// parses the string into a number and keeping the precision of the number
console.log(typeof parseFloat('1.12321423'));

// parseFloat will 'cut off' any part of the string which is not a number
console.log(parseFloat('5.5abc'));

console.log('--------');

/*   + operator   */

let myString = '12345'

console.log(typeof +myString);

let myOtherString = '10ab'

// + operator will not cut off any 'non number' string part and will return NaN
console.log(+myOtherString);

使用哪一个?

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

  • 在typescript中有诸如parseInt()parseFloat()Number()之类的内置函数,您可以使用它们。


    使用=>convertString("10.00")调用函数

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

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

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

    您可以始终使用强制转换选项。首先,必须将对象转换为"未知"类型,然后将其转换为预期的对象类型。

    1
    2
    3
    let subID:number = 0;

    subID = <number><unknown> await obj_s1aSite.submissionTableFirstID.getText();