숫자의 문자열 표현이 주어지면 TypeScript에서 어떻게 number
var numberString: string = "1234"; var numberValue: number = /* what should I do with `numberString`? */;
질문자 :Paul0515
숫자의 문자열 표현이 주어지면 TypeScript에서 어떻게 number
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
)에 대해 다르게 작동합니다.
이 답변 에서 가져온 표
이를 수행하는 Typescript 방법은 다음과 같습니다.
Number('1234') // 1234 Number('9BX9') // NaN
동료 Angular 사용자를 위해:
템플릿 내에서 Number(x)
및 parseInt(x)
는 오류를 발생시키고 +x
는 효과가 없습니다. 유효한 캐스팅은 x*1
또는 x/1
입니다.
여기의 다른 답변에서 볼 수 있듯이 변환을 수행하는 방법에는 여러 가지가 있습니다.
Number('123'); +'123'; parseInt('123'); parseFloat('123.45')
그래도 parseInt
에 대해 한 가지 더 언급하고 싶습니다.
parseInt
사용할 때는 항상 radix 매개변수를 전달하는 것이 좋습니다. 10진수 변환의 경우 10
입니다. 이것은 매개변수의 기본값이므로 생략할 수 있습니다. 2
진수의 경우 16진수의 경우 2와 16
실제로, 2와 36 사이의 모든 기수는 작동합니다.
parseInt('123') // 123 (don't do this) parseInt('123', 10) // 123 (much better) parseInt('1101', 2) // 13 parseInt('0xfae3', 16) // 64227
일부 JS 구현에서 parseInt
는 선행 0을 8진수로 구문 분석합니다 .
ECMAScript 3에서는 권장되지 않고 ECMAScript 5에서는 금지되어 있지만 많은 구현에서 선행 0으로 시작하는 숫자 문자열을 8진수로 해석합니다. 다음은 8진수 결과를 가질 수도 있고 10진수 결과를 가질 수도 있습니다. 이 신뢰할 수 없는 동작을 방지하려면 항상 기수를 지정하십시오.
— 엠디엔
코드가 더 명확해진다는 사실은 radix 매개변수를 지정하는 좋은 부작용입니다.
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진수는 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);
parseInt()
사용하십시오. 그러나 모든 숫자 값이 TS 의 부동 소수점 값 이기 때문에 데이터 유형은 여전히 부동 소수점입니다. 또한 구문 분석하려는 숫자의 기수를 지정해야 할 때 이 방법을 사용합니다.parseFloat()
사용하십시오.+
연산자를 사용하여 부동 소수점 숫자 로 강제 변환할 수 있습니다. 이것의 장점은 구문이 매우 짧다는 것입니다.가장 쉬운 방법은 +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
parseInt()
, parseFloat()
및 Number()
와 같은 내장 함수가 있으며 이를 사용할 수 있습니다.
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
=> convertstring('10.00')을 사용하여 함수를 호출합니다.
parseFloat(string) => float로 변환하는 데 사용할 수 있습니다. toFixed(4) => 소수점 이하 자릿수
parseInt(str) => 정수로 변환하는 데 사용할 수 있습니다.
convertstring(string){ let number_parsed: any = parseFloat(string).toFixed(4) return number_parsed }
세 가지 방법이 있습니다
let a = + '12'; let b = parseInt('12' , 10); // 10 means decimal number let c = Number('12');
typescript는 우리의 var a
가 ether가 될 것이라는 Number || String
export type StringOrNumber = number | string; export function toString (v: StringOrNumber) { return `${v}`; } export function toNumber (v: StringOrNumber) { return Number(v); } export function toggle (v: StringOrNumber) { return typeof v === "number" ? `${v}` : Number(v); }
다른 사람들이 말했듯이 parseInt() 등은 올바른 유형을 반환합니다. 또한 어떤 이유로든 값이 숫자 또는 문자열일 수 있고 parseInt()를 호출하지 않으려는 경우 typeof 표현식도 올바른 유형으로 캐스트됩니다.
function f(value:number|string){ if(typeof value==='number'){ // value : number }else { // value : string } }
이온 프로그래밍 상황에서 해결하기 어려운 데이터 유형을 변환하는 데 문제가 있는 경우가 많습니다. 바로 이 언어가 새롭기 때문입니다. 여기서는 사용자가 데이터 이온 유형을 문자열 데이터로 변환하는 방법을 알아야 하는 지침을 자세히 설명하겠습니다. 정수를 입력합니다.
Java, php, c, c++ 등과 같은 프로그래밍 언어에서 ... 모두 데이터를 쉽게 이동할 수 있으며 ionic에서는 다른 프로그래밍 언어에서도 쉽게 데이터 변환을 생성할 수 있습니다.
this.mPosition = parseInt("");
다음은 StrToNumber 함수의 수정된 버전입니다. 이전과,
이 답변은 이전 게시물보다 초기 질문에 더 적합한 가능한 솔루션입니다.
static StrToNumber(val: string, defaultVal:number = 0): number { let result:number = defaultVal; if(val == null) return result; if(val.length == 0) return result; val = val.trim(); if(val.length == 0) return(result); let sign:number = 1; // // . obtain sign from string, and place result in "sign" local variable. The Sign naturally defaults to positive // 1 for positive, -1 for negative. // . remove sign character from val. // Note, before the function returns, the result is multiplied by the sign local variable to reflect the sign. // . error check for multiple sign characters // . error check to make sure sign character is at the head or tail of the string // { let positiveSignIndex = val.indexOf('+'); let negativeSignIndex = val.indexOf('-'); let nTailIndex = val.length-1; // // make sure both negative and positive signs are not in the string // if( (positiveSignIndex != -1) && (negativeSignIndex != -1) ) return result; // // handle postive sign // if (positiveSignIndex != -1) { // // make sure there is only one sign character // if( (positiveSignIndex != val.lastIndexOf('+')) ) return result; // // make sure the sign is at the head or tail // if( (positiveSignIndex > 0) && (positiveSignIndex < nTailIndex ) ) return result; // // remove sign from string // val = val.replace("+","").trim(); } // // handle negative sign // if (negativeSignIndex != -1) { // // make sure there is only one sign character // if( (negativeSignIndex != val.lastIndexOf('-')) ) return result; // // make sure the sign is at the head or tail // if( (negativeSignIndex > 0) && (negativeSignIndex < nTailIndex ) ) return result; // // remove sign from string // val = val.replace("-","").trim(); sign = -1; } // // make sure text length is greater than 0 // if(val.length == 0) return result; } // // convert string to a number // var r = +(<any>val); if( (r != null) && (!isNaN(r)) ) { result = r*sign; } return(result); }
당신이 사용할 수있는 최신 버전 as
, 여기에 예입니다 :
var numberString: string = "1234"; const numberValue = numberString as number;
const numberString = "12" const number = ~~numberString
출처 : http:www.stackoverflow.com/questions/14667713/how-to-convert-a-string-to-number-in-typescript
Subversion 저장소에서 "분기", "태그" 및 "트렁크"는 무엇을 의미합니까? (1) | 2023.05.02 |
---|---|
C#의 여러 줄 문자열 리터럴 (0) | 2023.05.02 |
탭을 4칸으로 재정의 (0) | 2023.04.30 |
Windows 개발 시스템을 사용하여 iPhone용으로 개발하려면 어떻게 해야 합니까? (0) | 2023.04.30 |
C에서 배열의 크기를 어떻게 결정합니까? (0) | 2023.04.30 |