[typescript] TypeScript에서 문자열을 숫자로 변환하는 방법은 무엇입니까?

숫자의 문자열 표현이 주어지면 numberTypeScript 에서 유형으로 변환하는 방법은 무엇입니까?

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



답변

JavaScript 에서 와 마찬가지로parseInt 또는 parseFloat함수를 사용하거나 단항 +연산자 를 사용할 수 있습니다.

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

언급 된 모든 기술은 올바른 타이핑을 가지며 간단한 10 진 정수 문자열을 올바르게 구문 분석 "123"하지만 예상되는 다양한 다른 경우 (예 "123.45"🙂 및 코너 경우 ( 예 :)에 대해 다르게 동작합니다 null.

변환 표이 답변
에서 가져온 표


답변

이 작업을 수행하는 Typescript 방법은 다음과 같습니다.

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

여기에 답변 된대로 : https : //.com/a/23440948/2083492


답변

동료 Angular 사용자의 경우 :

템플릿 , Number(x)parseInt(x)에러가 발생하고, +x아무런 효과가 없습니다. 유효한 캐스팅은 x*1또는 x/1입니다.


답변

다른 답변에서 볼 수 있듯이 변환을 수행하는 여러 가지 방법이 있습니다.

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

그래도 한 가지 더 언급하고 싶습니다 parseInt.

사용할 때는 항상 기수 매개 변수를 전달하는parseInt 것이 좋습니다 . 10 진수 변환의 경우는입니다 . 이것이 매개 변수의 기본값이므로 생략 할 있습니다. 이진수의 경우 a 와 16 진수입니다. 실제로 2와 36 사이의 기수가 작동합니다.10216

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

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

parseInt함수는 문자열을 구문 분석하여 숫자로 변환합니다. 일부 JS 구현에서 parseInt선행 0을 8 진으로 구문 분석합니다.

ECMAScript 3에서는 권장하지 않고 ECMAScript 5에서는 금지되어 있지만 많은 구현에서는 선행 0으로 시작하는 숫자 문자열을 8 진수로 해석합니다. 다음은 8 진수 결과이거나 10 진수 결과 일 수 있습니다. 신뢰할 수없는 동작을 피하려면 항상 기수를 지정하십시오.

MDN

코드가 더 명확해진다는 사실은 기수 매개 변수를 지정하면 좋은 부작용입니다.

이후 parseFloat기수 10에서는 숫자 표현식 만 구문 분석 기수 매개 변수는 필요하지 않습니다.

이것에 더 많은 것 :


답변

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()

JavaScript Type Conversion에 대한 모든 흥미로운 세부 정보 .


답변

다음 방법 중 하나를 수행 할 수 있습니다.

var str = '54';

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


답변

문자열을 숫자로 변환 :

Typescript에서는 다음과 같은 방식으로 문자열을 숫자로 변환합니다.

  • ParseInt():이 함수는 2 개의 인수를 취합니다. 첫 번째는 구문 분석 할 문자열입니다. 두 번째는 기수입니다 (예 : 10 진수의 경우 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);

어느 것을 사용해야합니까?

  1. ParseInt()문자열을 정수 로 변환하려는 경우에 사용하십시오 . 그러나 모든 숫자 값이 TS의 부동 소수점 값 이므로 데이터 유형은 여전히 부동입니다. 입니다. 구문 분석하려는 숫자의 기수를 지정해야 할 때도이 방법을 사용하십시오.
  2. ParseFloat()문자열을 부동 소수점 숫자 로 구문 분석해야 할 때 사용하십시오 .
  3. +문자열 앞에 연산자를 사용하여 부동 소수점 숫자 로 강제 변환 할 있습니다. 이것의 장점은 구문이 매우 짧다는 것입니다.