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);
업데이트 : 나는 몇 가지 추가 수수께끼를했다. 내가 생각 해낸 최고의 소파 : var aNumber : number = ( "1") * 1;
문자열이 숫자인지 확인하는 방법 은 다음과 같습니다. In Typescript, How to check if a string is Numeric .
parseInt
또는 parseFloat
함수를 사용하거나 단순히 단항 +
연산자 를 사용할 수 있습니다 .
var x = "32";
var y = +x; // y: number
이를 수행하는 Typescript 방법은 다음과 같습니다.
Number('1234') // 1234
Number('9BX9') // NaN
답변 : https://stackoverflow.com/a/23440948/2083492
다른 Angular 사용자를 위해 :
내 템플릿 , Number(x)
및 parseInt(x)
에러가 발생하고, +x
아무런 효과가 없습니다. 유효한 캐스팅은 x*1
또는 x/1
입니다.
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의 모든 흥미로운 심층 세부 사항 .
여기에 다른 답변에서 볼 수 있듯이 변환을 수행하는 여러 가지 방법이 있습니다.
Number('123');
+'123';
parseInt('123');
parseFloat('123.45')
그래도 한 가지 더 언급하고 싶습니다 parseInt
.
를 사용할 때는 항상 radix 매개 변수를 전달하는parseInt
것이 좋습니다 . 십진수 변환의 경우 . 이것이 매개 변수의 기본값이므로 생략 할 수 있습니다. 바이너리의 경우 a 이고 16 진수입니다. 실제로 2와 36 사이의 모든 기수는 작동합니다.10
2
16
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
코드가 더 명확 해졌다는 사실은 radix 매개 변수를 지정하는 좋은 부작용입니다.
parseFloat
기수 10의 숫자 표현식 만 구문 분석 하므로 여기서 기수 매개 변수가 필요하지 않습니다.
이에 대한 추가 정보 :
다음 방법 중 하나를 따를 수 있습니다.
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);
어느 것을 사용해야합니까?
- Use
ParseInt()
when you want a string converted to an integer. However, the data type is still a float, since all number values are floating point values in TS. Also use this method when you need to specifiy the radix of the number you want to parse. - Use
ParseFloat()
when you need to parse a string into a floating point number. - You can use the
+
operator before a string to coerce it into a floating point number. The advantage of this is that the syntax is very short.
There are inbuilt functions like parseInt()
, parseFloat()
and Number()
in Typescript, you can use those.
Call the function with => convertstring('10.00')
parseFloat(string) => It can be used to convert to float, toFixed(4) => to how much decimals
parseInt(str) => It can be used to convert to integer
convertstring(string){
let number_parsed: any = parseFloat(string).toFixed(4)
return number_parsed
}
There are a lot of you are having a problem to convert data types are difficult to solve in the ionic programming situations, because this very language is new, here I will detail instructions for the user to know how to convert data ionic types to string data type integer.
In programming languages such as java, php, c, c++, ... all can move data easily, then in ionic can also create for us data conversion is also an easy way not least in other programming languages.
this.mPosition = parseInt("");
There are three ways
let a = + '12';
let b = parseInt('12' , 10); // 10 means decimal number
let c = Number('12');
if you are talking about just types, as other people said, parseInt() etc will return the correct type. Also, if for any reason the value could be both a number or a string and you don't want to call parseInt(), typeof expressions will also cast to the correct type:
function f(value:number|string){
if(typeof value==='number'){
// value : number
}else {
// value : string
}
}
Here is a modified version of the StrToNumber function. As before,
- It allows an optional sign to appear in front or behind the numeric value.
- It performs a check to verify there is only one sign at the head or tail of the string.
- If an error occurs, a "passed" default value is returned.
This response is a possible solution that is better suited to the initial question than my previous post.
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);
}
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
You can always use the cast option. First, you must convert your object to "unknown" type and then cast it into an expected object type.
let subID:number = 0;
subID = <number><unknown> await obj_s1aSite.submissionTableFirstID.getText();
참고URL : https://stackoverflow.com/questions/14667713/typescript-converting-a-string-to-a-number
'Development Tip' 카테고리의 다른 글
테이블이있는 경우 삭제하는 방법은 무엇입니까? (0) | 2020.09.30 |
---|---|
android.os.FileUriExposedException : Intent.getData ()를 통해 앱 외부에 노출 된 file : ///storage/emulated/0/test.txt (0) | 2020.09.30 |
공백 문자를 인코딩하는 URL : + 또는 % 20? (0) | 2020.09.30 |
HTML의 레이아웃에 테이블을 사용하지 않는 이유는 무엇입니까? (0) | 2020.09.30 |
JavaScript에서 Switch 문 여러 사례 (0) | 2020.09.30 |