Development Tip

TypeScript 문자열을 숫자로 변환

yourdevel 2020. 9. 30. 11:33
반응형

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 사이의 모든 기수는 작동합니다.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

코드가 더 명확 해졌다는 사실은 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);

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

  1. 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.
  2. Use ParseFloat() when you need to parse a string into a floating point number.
  3. 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,

  1. It allows an optional sign to appear in front or behind the numeric value.
  2. It performs a check to verify there is only one sign at the head or tail of the string.
  3. 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

Online Number Conversion Tool

Number Converter


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

반응형