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中,如何检查字符串是否为数字。
您可以使用
1 2 | var x ="32"; var y = +x; // y: number |
这样做的排版方式是:
1 2 | Number('1234') // 1234 Number('9BX9') // NaN |
回答如下:https://stackoverflow.com/a/23440948/2083492
对于我们的角型用户:
在模板中,
在阐述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]上再提一件事。
使用
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 |
那么,
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
代码变得更清晰是指定基数参数的一个好的副作用。
由于
更多关于这一点:
- 为什么我们需要使用基数?(所以问题)
- 那么回答"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); |
在typescript中有诸如
使用=>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(); |