마지막 업데이트: 1.11.2015

종종 한 데이터를 다른 데이터로 변환해야 할 필요가 있습니다. 예를 들어:

변수 번호1 = "46"; 변수 번호2 = "4"; varresult = 숫자1 + 숫자2; 콘솔 로그(결과); //464

두 변수 모두 문자열, 보다 구체적으로 숫자의 문자열 표현을 나타냅니다. 결과적으로 우리는 숫자 50이 아니라 문자열 464를 얻게 될 것입니다. 그러나 일반적으로 일반 숫자와 마찬가지로 더하기, 빼기도 할 수 있다면 좋을 것입니다.

이 경우 변환 작업을 사용할 수 있습니다. 이 함수는 문자열을 숫자로 변환하는 데 사용됩니다. 구문 분석():

변수 번호1 = "46"; 변수 번호2 = "4"; var 결과 = parseInt(숫자1) + parseInt(숫자2); 콘솔 로그(결과); // 오십

문자열을 다음으로 변환하려면 분수적용된 기능 parseFloat():

varnumber1 = "46.07"; varnumber2 = "4.98"; var 결과 = parseFloat(숫자1) + parseFloat(숫자2); 콘솔 로그(결과); //51.05

이 경우 문자열은 "123hello"와 같이 혼합된 내용을 가질 수 있습니다. 즉, 이 경우에는 숫자가 있지만 일반 문자도 있습니다. 그러나 parseInt() 메서드는 여전히 변환을 시도합니다.

Varnum1 = "123hello"; varnum2 = parseInt(num1); 콘솔 로그(num2); // 123

이 메서드는 변환에 실패하면 문자열이 숫자를 나타내지 않으며 변환할 수 없음을 나타내는 NaN(숫자가 아님)을 반환합니다.

특별한 기능으로 isNaN()문자열이 숫자를 나타내는지 확인할 수 있습니다. 문자열이 숫자가 아니면 함수는 true를 반환하고 숫자이면 false를 반환합니다.

변수 num1 = "자바스크립트"; varnum2 = "22"; varresult = isNaN(num1); 콘솔 로그(결과); // true - num1이 숫자가 아님 result = isNaN(num2); 콘솔 로그(결과); // 거짓 - num2는 숫자입니다.

위에서 우리는 문자열을 숫자로 변환하는 것을 고려했습니다. 십진법. 그러나 숫자를 모든 시스템으로 변환할 수 있습니다. 기본적으로 JavaScript 인터프리터 자체는 문자열을 변환하려는 숫자 체계를 추측합니다(일반적으로 10진수 체계가 선택됨). 그러나 두 번째 매개변수를 사용하여 특정 시스템에서 문자열을 숫자로 변환하려는 것을 명시적으로 나타낼 수 있습니다. 예를 들어, 숫자로 변환 이진법:

Varnum1 = "110"; varnum2 = parseInt(num1, 2); 콘솔 로그(num2); // 6

2진수 110은 10진수 6이기 때문에 결과는 6이 됩니다.

이제 글을 쓰자 작은 프로그램, 여기서 변수와 함께 작업을 사용합니다.

자바스크립트

prompt() 함수의 도움으로 브라우저에 값을 입력하라는 대화 상자가 표시됩니다. 이 함수의 두 번째 인수는 기본적으로 사용할 값을 지정합니다.

그러나 prompt() 함수는 문자열을 반환합니다. 따라서 이 문자열을 사용하여 작업을 수행하려면 이 문자열을 숫자로 변환해야 합니다.

브라우저에서 페이지를 열면 입금액을 입력하라는 초대가 표시됩니다.

그러면 백분율을 입력하기 위한 유사한 메시지가 표시됩니다. 그리고 마지막에 프로그램은 데이터를 수신하여 숫자로 변환하고 계산을 수행합니다.

JavaScript는 동적 데이터 입력이 가능한 언어입니다. 이것은 동일한 변수에 값을 쓸 수 있음을 의미합니다 다양한 방식, 변수 자체의 유형이 변경됩니다. 이 동작은 종종 변수의 다른 동작을 잊는 것을 가능하게 합니다. 다른 유형, 그러나 여전히 이 기능을 기억할 필요가 있습니다. 다음 예제에서 이를 보여드리겠습니다.

console.log(합(1, 2)); // 3(여기서는 모든 것이 정상입니다) console.log(sum(1, "2")); // 12(여기서는 그다지 많지 않음)

예제에서 볼 수 있듯이 함수는 합집합인수 중 하나 이상이 숫자가 아닌 경우 잘못 작동합니다. 사실은 문자열에 숫자를 "추가"할 때 숫자가 문자열로 변환되고 두 번째 피연산자와 연결(접착)된다는 것입니다.

이러한 복잡성을 피하기 위해 스크립트 실행 중에 변수 유형을 찾아 동작을 수정하거나 변수 유형을 주의 깊게 모니터링할 수 있습니다.

typeof 연산자

이 단항 연산자는 절대적으로 모든 값을 피연산자로 사용하고 해당 유형을 문자열 변수로 반환합니다.

JavaScript에는 다음과 같은 데이터 유형이 있습니다.

// 1.) 객체 콘솔.log (typeof ( ) ) ; // 객체 var p = ( x: 1 , y: 3 ) ; 콘솔.로그(typeof p) ; // 객체 // 2.) function function sayHello() ( console.log ("Hello!" ) ; ) console.log (typeof sayHello) ; // function // 3.) string console.log (typeof "JavaScript" ) ; // 문자열 // 4.) 숫자 console.log (typeof 3.1415 ) ; // 숫자 // 5.) 부울 console.log (typeof true ) ; // 부울 // 6.) 정의되지 않음 var notExistsOne; console.log(notExistsOne 유형) ; // 정의되지 않은 콘솔.log (typeof notExistsTwo) ; // 한정되지 않은

// 1.) 객체 console.log(typeof()); // 객체 var p = (x: 1, y: 3); console.log(typeofp); // 객체 // 2.) function function sayHello() ( console.log("Hello!"); ) console.log(typeof sayHello); // 함수 // 3.) string console.log(typeof "JavaScript"); // 문자열 // 4.) 숫자 console.log(typeof 3.1415); // 숫자 // 5.) 부울 console.log(typeof true); // 부울 // 6.) 정의되지 않음 var notExistsOne; console.log(notExistsOne 유형); // 정의되지 않음 console.log(typeof notExistsTwo); // 한정되지 않은

참고 한정되지 않은단일 값으로 구성된 데이터 유형이기도 합니다.

깁스

프로그래밍에서 유형 캐스팅은 한 유형의 변수 값을 다른 유형의 값으로 변환하는 것입니다.
종종 이 변환은 프로그래머의 제어 없이 발생합니다. 이것은 함수의 예에서 볼 수 있습니다. 합집합. 원래 유형의 변수에 대한 연산을 수행한 결과가 명확하지 않은 경우 유형 변경이 발생합니다. 예를 들어 숫자가 있는 문자열을 더하면 어떤 결과가 나올지 정확히 말할 수는 없지만 두 개의 숫자를 더하는 연산은 뻔하고 이 경우 숫자를 문자열로 줄이는 것이 논리적입니다.

문자열을 숫자로 변환

때로는 프로그래머 자신이 변수에 몇 가지 연산을 적용하여 변수의 유형을 변경할 수 있습니다. 예를 들어 문자열에 대한 증가 또는 감소 연산은 문자열을 숫자로 변환합니다.

var c = "숫자가 아님"; ++ㄷ; console.log(유형의 c); // 난

가독성이 낮고 명확하지 않기 때문에 문자열을 숫자로 변환하는 이 방법에 의존할 필요가 없다는 점은 주목할 가치가 있습니다. 이 작업을 위해 js에 내장 함수가 있습니다. 구문 분석그리고 파스플로트. 숫자로 변환할 문자열을 첫 번째 인수로 사용하고 선택적 두 번째 인수로 첫 번째 인수로 전달된 문자열의 숫자를 포함하는 숫자 시스템의 밑수를 사용합니다. 두 번째 인수를 지정하지 않으면 문자열에 10진수 시스템의 숫자가 포함된 것으로 간주됩니다.

기능 구문 분석문자열을 정수로 변환하는 데 사용되며 함수 파스플로트분수로 변환합니다.

var a = parseInt("10") ; console.log ([ "a = " , a, "; typeof a:" , typeof a] .join (" " ) ) ; // a = 10 ; typeof a: 숫자 var pi = parseInt("3.1415" ) ; console.log("파이 = " + 파이) ; // 파이 = 3 파이 = parseFloat("3.1415" ) ; console.log("파이 = " + 파이) ; // 파이 = 3.1415

변수 a = parseInt("10"); console.log(["a = ", a, "; typeof a:", typeof a].join(" ")); // a = 10 ; typeof a: 숫자 var pi = parseInt("3.1415"); console.log("파이 = " + 파이); // 파이 = 3 파이 = parseFloat("3.1415"); console.log("파이 = " + 파이); // 파이 = 3.1415

문자열에는 16진수, 8진수 또는 지수를 비롯한 모든 리터럴 숫자 값이 포함될 수 있습니다.

a = parseInt("010") ; console.log("a = " + a) ; // a = 8 a = parseInt("0xAA" ) ; console.log("a = " + a) ; // a = 170 a = parseFloat("1e-10" ) ; console.log("a = " + a) ; // a = 1e-10 (1e-10 = 1 * 10^-10 = 0.0000000001)

a = parseInt("010"); console.log("a = " + a); // a = 8 a = parseInt("0xAA"); console.log("a = " + a); // a = 170 a = parseFloat("1e-10"); console.log("a = " + a); // a = 1e-10 (1e-10 = 1 * 10^-10 = 0.0000000001)

함수의 두 번째 매개변수로 구문 분석그리고 파스플로트숫자 체계의 기준을 지정할 수 있습니다.

a = parseInt("10" , 8 ) ; console.log("a = " + a) ; // a = 8 a = parseInt("010" , 10 ) ; console.log("a = " + a) ; // a = 10 a = parseInt("ff" , 16 ) ; console.log("a = " + a) ; // a = 255

a = parseInt("10", 8); console.log("a = " + a); // a = 8 a = parseInt("010", 10); console.log("a = " + a); // a = 10 a = parseInt("ff", 16); console.log("a = " + a); // a = 255

값이 문자열에 있으면 함수는 구문 분석그리고 파스플로트첫 번째 매개변수로 사용하고 숫자 리터럴이 아닌 경우 이러한 함수를 실행한 결과는 값이 됩니다. .

a = parseInt("숫자가 아님") ; console.log("a = " + a) ; // a = NaN a = parseFloat("숫자가 아님" ) ; console.log("a = " + a) ; // a = NaN

a = parseInt("숫자가 아닙니다."); console.log("a = " + a); // a = NaN a = parseFloat("숫자가 아님"); console.log("a = " + a); // a = NaN

문자열 변환

자바스크립트 의미모든 유형을 문자열로 캐스팅할 수 있습니다. 문자열이 숫자와 연결되면 그 숫자가 문자열로 줄어들고 그 다음에야 연결이 발생한다고 위에서 이미 언급했습니다. 이것은 모든 값 유형에서 발생합니다.

var str = "객체: " + ( ) ; 콘솔 로그(str) ; // 객체: str = "배열: " + [ 1 , 2 , 3 ] ; 콘솔 로그(str) ; // 배열: 1,2,3 function sum(a, b) ( return a + b; ) str = "Function: " + sum; 콘솔 로그(str) ; /* 함수: function sum(a, b) ( return a + b; ) */

var str = "객체: " + (); 콘솔 로그(str); // 객체: str = "배열: " + ; 콘솔 로그(str); // 배열: 1,2,3 function sum(a, b) ( return a + b; ) str = "Function: " + sum; 콘솔 로그(str); /* 함수: function sum(a, b) ( return a + b; ) */

실제로 객체를 문자열로 캐스팅할 때 메서드가 암시적으로 호출됩니다. toString, 명시적으로 호출할 수도 있습니다.

var p = ( x: 2 , y: 4 ) , str; str = p.toString(); console.log(str 유형) ; // 문자열 console.log(str) ; // str = [ 1 , 2 , 3 ] .toString () ; console.log(str 유형) ; // 문자열 console.log(str) ; // 1,2,3

var p = (x: 2, y: 4), str; str = p.toString(); console.log(typeofstr); // 문자열 console.log(str); // str = .toString(); console.log(typeofstr); // 문자열 console.log(str); // 1,2,3

숫자 변환

실행할 때 숫자로의 변환이 발생합니다. 수학 연산유형 캐스팅(==, !=)으로 비교 연산을 수행할 때 값이 거짓빈 배열은 0 유형의 값으로 변환됩니다. 숫자.

var a = 참 + 참 + 참; // 1 + 1 + 1 console.log(a); // 삼

비어 있지 않은 배열, 객체 및 함수는 산술 표현식에 사용될 때 문자열로 캐스트됩니다.

변수 arr = [1, 2, 3] ; console.log (arr + 4 ) ; // 1,2,34 function sum(a, b) ( return a + b; ) console.log (sum + 5 ) ; // 함수 sum(a, b)(return a + b;)5

변수 변수 = ; console.log(arr + 4); // 1,2,34 function sum(a, b)(return a + b;) console.log(sum + 5); // 함수 sum(a, b)(return a + b;)5

보시다시피, js의 암시적 유형 변환은 항상 명확하지 않으므로 다음과 같은 명시적 유형 변환을 위한 함수를 사용하여 이를 피해야 합니다. 구문 분석, 파스플로트그리고 toString.

그게 다야. 언제나처럼 행운을 빕니다!

자바스크립트에서 문자열을 숫자로 변환하는 방법은 크게 두 가지가 있습니다. 한 가지 방법은 그것을 구문 분석하는 것이고 다른 방법은 유형을 숫자로 변경하는 것입니다. 다른 답변의 모든 트릭(예: 단항 플러스)은 암시적으로 문자열 유형을 숫자로 강제 변환하는 것을 의미합니다. 숫자 기능을 사용하여 동일한 작업을 수행할 수도 있습니다.

구문론

변수 구문 분석 = parseInt("97", 10);

ParseInt 및 parseFloat는 문자열을 숫자로 구문 분석하는 데 사용되는 두 가지 함수입니다. "92px"와 같은 문자열을 구문 분석하는 데 유용할 수 있는 인식하지 못하는 문자에 도달하면 구문 분석이 자동으로 중지되지만 잘못된 입력에 대해 오류를 제공하지 않고 대신 "NaN을 반환"하므로 다소 위험합니다. 문자열이 숫자로 시작하지 않는 경우 문자열의 시작 부분에 있는 공백은 무시됩니다. 다음은 원하는 다른 작업을 수행하지만 일이 잘못되었다는 표시를 제공하지 않는 예제입니다.

Var widgetsSold = parseInt("97,800", 10); // widgetsSold는 이제 97입니다.

항상 10진수를 두 번째 인수로 지정하는 것이 좋습니다. 이전 브라우저에서는 문자열이 0에서 시작하면 기수 값이 지정되지 않는 한 8진수로 해석되어 많은 사람들을 놀라게 했습니다. 기수 값이 지정되지 않는 한 문자열이 0x로 시작하면 16진수 시작에 대한 동작이 트리거됩니다. 0xff. 표준은 실제로 ecmascript 5로 변경되었으므로 최신 브라우저이유가 지정되지 않은 경우 선행 0이 있을 때 더 이상 8진수를 실행하지 않습니다. parseInt는 기본 36까지의 급수를 이해하며, 이 경우 대문자와 소문자가 모두 동등하게 취급됩니다.

문자열 유형을 숫자로 변경

ParseInt를 사용하지 않는 위에서 언급한 다른 모든 트릭에는 암시적으로 문자열을 숫자로 강제 변환하는 작업이 포함됩니다. 나는 그것을 명시 적으로하는 것을 선호합니다

형변환 = Number("97");

이것은 구문 분석 방법과 다릅니다(여전히 공백은 무시하지만). 더 엄격합니다. 전체 문자열을 이해하지 못하는 경우 NaN 을 반환하므로 97px 와 같은 문자열에는 사용할 수 없습니다. Number 래퍼 객체가 아닌 기본 숫자를 원하기 때문에 Number 함수 앞에 new 를 사용하지 않도록 하십시오.

분명히 숫자로 변환하면 정수가 아닌 부동 소수점이 될 수 있는 값을 제공하므로 정수를 원하면 변경해야 합니다. 이를 수행하는 방법에는 여러 가지가 있습니다.

Varrounded = Math.floor(Number("97.654")); // 다른 옵션은 Math.ceil, Math.round입니다. var fixed = Number("97.654").toFixed(0); // 잘리지 않고 반올림됨 var bitwised = Number("97.654")|0; // 큰 수에는 사용하지 않음

모든 비트 연산자(여기서는 비트 or를 수행했지만 이전 답변 또는 Bitshift에서와 같이 이중 부정을 수행할 수도 있음)는 값을 32비트 정수로 변환하고 대부분은 부호 있는 정수로 변환합니다. 이 큰 정수를 검색하는 것을 원하지 않습니다.. 정수를 32비트로 표현할 수 없으면 완료됩니다.

"~~"3000000000.654" === -1294967296 // 이것은 Number("3000000000.654")|0 "3000000000.654"와 동일 >> 0 === 3647256576 // 그러나 더 큰 숫자는 여전히 실패합니다.

큰 숫자로 올바르게 작업하려면 반올림 방법을 사용해야 합니다.

Math.floor("3000000000.654") === 3000000000 // Math.floor(Number("3000000000.654"))와 동일

이 모든 방법은 지수 표기법을 이해하므로 2e2는 NaN이 아니라 200입니다. 또한 Number는 "무한대"를 이해하지만 구문 분석 방법은 이해하지 못합니다.

관습

이러한 방법 중 하나가 정확히 원하는 것을 수행할 가능성은 거의 없습니다. 예를 들어, 나는 일반적으로 구문 분석 실패 오류를 원하고 무한대 지원, 지수 또는 선행 공백이 필요하지 않습니다. 용도에 따라 사용자 정의 변환 함수를 작성하는 것이 합리적일 때가 있습니다.

항상 숫자 출력 또는 구문 분석 방법 중 하나가 예상 숫자의 종류인지 확인하십시오. 숫자가 NaN이 아닌지 확인하기 위해 isNaN을 사용하는 것이 거의 확실할 것입니다(일반적으로 구문 분석이 실패했는지 여부를 알 수 있는 유일한 방법).

표현식에 어떤 유형의 변수가 사용되는지는 중요하지 않습니다. 표현식이 수학이면 모든 변수가 자동으로 숫자로 해석됩니다. 문자열이 처리되면 표현식의 모든 "참가자"가 문자열로 처리됩니다. 그러나 JavaScript "문자열을 숫자로" 변환하는 작업은 훨씬 더 광범위한 맥락에서 존재합니다.

문자열을 숫자로 변환하는 JavaScript 메서드

문자열을 숫자로 변환하는 방법의 무기고는 크지 않지만 모든 경우에 충분합니다. 간단한 경우. 여기 JavaScript(초보자를 위한 것)는 실용적인 예제와 함께 단순한 것에서 복잡한 것으로 가는 길입니다.

당신은 관심을 가질 것입니다:

이 예에서는 네 가지 다른 문자열을 설명합니다. 첫 번째 출력 블록에서 각 유형의 가변 함수 typeof는 문자열로 정의됩니다. 그러면 각 문자열은 매우 간단하게 숫자로 변환됩니다. 두 번째 출력 블록에서 변환 후 변수의 변경 사항을 볼 수 있으며 유형이 숫자가 됩니다. JavaScript parseFloat 변환 예제는 특히 "12e+3"이었지만 이제는 "12000"임을 보여줍니다.

문자열을 숫자로 변환할 때의 변경은 중요할 수 있습니다! 그러나 첫 번째 문자만 중요합니다. 숫자여야 합니다. 숫자가 없으면 결과는 NaN이 됩니다.

숫자 "가 되는" 문자열의 역 변환이 항상 동일한 문자열은 아닙니다. 이 순간은 숫자 정보 입력의 정확성을 확인하는 데 사용할 수 있습니다.