TypeScript将字符串转换为数字

Pau*_*515 714 typescript

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

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);
Run Code Online (Sandbox Code Playgroud)

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

检查字符串是否为数字在此处回答:在Typescript中,如何检查字符串是否为数字.

Rya*_*ugh 1091

您可以使用parseIntparseFloat函数,或只使用一元运算+符:

var x = "32";
var y = +x; // y: number
Run Code Online (Sandbox Code Playgroud)

  • small提示:parseInt(null)返回NaN但+ null返回0 (164认同)
  • @thedayturns没有编程方法,因为编程只是电 (15认同)
  • 不像菲利普这里更高级别的答案那样富有表现力,这就是TypeScript方式. (9认同)
  • 没有TypeScript方式,因为TypeScript只是JavaScript. (5认同)
  • @Patrick 不知道为什么你称之为“TypeScript”方式,因为它也只是简单的 Javascript... (3认同)
  • 虽然我不会说 TypeScript 只是 JavaScript,但在这种情况下,答案确实是“与 JavaScript 中的方式完全相同”。本页所有答案中的所有技术在类型上都表现正确。我看不出它们中的任何一个或多或少都是“TypeScript 方式”。应在评估每种技术在极端情况下的表现后选择解决方案。请参阅:https://medium.com/@nikjohn/cast-to-number-in-javascript-using-the-unary-operator-f4ca67c792ce (2认同)

Phi*_*nci 953

Typescript的方法是:

Number('1234') // 1234
Number('9BX9') // NaN
Run Code Online (Sandbox Code Playgroud)

在这里回答:https://stackoverflow.com/a/23440948/2083492

  • @Devid - 你可以简化为`let a = Number('x')|| 0;` - `Number('x')`将返回'NaN`,这是"falsey".因此,`a`将被赋予`0.`比使用三元语句和解析两次更清晰,可以说(稍微)更快. (17认同)
  • 注意:您可以使用`isNaN`函数检查NaN. (4认同)
  • 我认为 new Number("1234").valueOf() 真的是我们都在寻找的—— (3认同)
  • 请注意,这不起作用:let value:number = valueAsString; (2认同)
  • @ Paul0515您能否将其更新为正确答案 (2认同)
  • 小提示:不要使用“new Number()”,因为它会生成“Number”类型而不是“number”。使用“数字()” (2认同)
  • 没有明显的“打字稿方式来做到这一点”。这也适用于 Javascript。 (2认同)

phi*_*294 87

对于我们的Angular用户:

模板中,Number(x)parseInt(x)抛出错误,并且+x没有任何效果.有效的铸造将是x*1x/1.

  • 那是因为 `Number` 不在评估范围内。你可以写`class MyComponent { Number = Number; }` 来使用它。 (8认同)

小智 49

在谈到Ryan所说的内容时,TypeScript总体上包含了JavaScript习惯用法.

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()
Run Code Online (Sandbox Code Playgroud)

JavaScript类型转换中所有有趣的深入细节.


Fab*_*uer 46

如此处的其他答案所示,有多种方法可以进行转换:

Number('123');
+'123';
parseInt('123');
parseFloat('123.45')
Run Code Online (Sandbox Code Playgroud)

我还想提一件事parseInt.

使用时parseInt,总是传递radix参数是有意义的.对于十进制转换,即10.这是参数的默认值,这就是可以省略的原因.对于二进制,它是a 216十六进制.实际上,2到36之间的任何基数都有效.

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

parseInt('1101', 2)     // 13
parseInt('0xfae3', 16)  // 64227
Run Code Online (Sandbox Code Playgroud)

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

虽然ECMAScript 3不鼓励并且ECMAScript 5禁止,但许多实现解释以前导0开头为八进制的数字字符串.以下可能有八进制结果,或者可能有十进制结果.始终指定一个基数以避免这种不可靠的行为.

- MDN

代码变得更清晰的事实是指定radix参数的一个很好的副作用.

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

更多关于此:


小智 22

您可以按照以下任一方式进行操作.

var str = '54';

var num = +str; //easy way by using + operator
var num = parseInt(str); //by using the parseInt operation 
Run Code Online (Sandbox Code Playgroud)


Wil*_*een 12

字符串到数字的转换:

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

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

例子:

/*    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);
Run Code Online (Sandbox Code Playgroud)

使用哪个?

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


Ben*_*Dev 12

最简单的方法是使用 +strVal 或 Number(strVal)

例子:

let strVal1 = "123.5"
let strVal2 = "One"
let val1a = +strVal1
let val1b = Number(strVal1)
let val1c = parseFloat(strVal1)
let val1d = parseInt(strVal1)
let val1e = +strVal1 - parseInt(strVal1)
let val2a = +strVal2

console.log("val1a->", val1a) // 123.5
console.log("val1b->", val1b) // 123.5
console.log("val1c->", val1c) // 123.5
console.log("val1d->", val1d) // 123
console.log("val1e->", val1e) // 0.5
console.log("val2a->", val2a) // NaN
Run Code Online (Sandbox Code Playgroud)


Mig*_*oki 8

有喜欢的内置功能parseInt()parseFloat()Number()在打字稿,您可以使用这些。


Kan*_*hew 5

使用 => Convertstring('10.00') 调用该函数

parseFloat(string) => 可以用来转换为float,toFixed(4) => 转换为多少位小数

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

convertstring(string){
    let number_parsed: any = parseFloat(string).toFixed(4)
    return number_parsed
}
Run Code Online (Sandbox Code Playgroud)


小智 5

var myNumber: number = 1200;
//convert to hexadecimal value
console.log(myNumber.toString(16)); //will return  4b0
//Other way of converting to hexadecimal
console.log(Math.abs(myNumber).toString(16)); //will return  4b0
//convert to decimal value
console.log(parseFloat(myNumber.toString()).toFixed(2)); //will return  1200.00
Run Code Online (Sandbox Code Playgroud)

在线号码转换工具

数字转换器