JavaScript에서 문자열을 정수로 변환하려면 어떻게 해야 합니까?
JavaScript에서 문자열을 정수로 변환하려면 어떻게 해야 합니까?
입니다.Number★★★★
var x = Number("1000")
이 방법이 효과가 없는 경우 parseInt, unary plus, floor를 사용한 parseFloat 및 Math.round 메서드가 있습니다.
parseInt:
var x = parseInt("1000", 10); // you want to use radix 10
// so you get a decimal number even with a leading 0 and an old browser ([IE8, Firefox 20, Chrome 22 and older][1])
unary plus 문자열이 이미 정수 형식인 경우:
var x = +"1000";
문자열이 플로트이거나 플로트일 수 있으며 정수를 원하는 경우:
var x = Math.floor("1000.01"); //floor automatically converts string to number
또는 Math.floor를 여러 번 사용하는 경우:
var floor = Math.floor;
var x = floor("1000.01");
parseInt를 호출할 때 기수를 입력하는 것을 잊어버리는 타입이라면 parseFloat을 사용하여 원하는 대로 반올림할 수 있습니다.여기는 바닥이에요.
var floor = Math.floor;
var x = floor(parseFloat("1000.01"));
흥미롭게도, Math.round(Math.floor와 같은)는 문자열에서 숫자로 변환하기 때문에 숫자를 반올림하고 싶은 경우(또는 문자열에 정수가 있는 경우)에는 다음과 같은 좋은 방법이 있습니다.
var round = Math.round;
var x = round("1000"); //equivalent to round("1000",0)
해석해 보다Int 함수:
var number = parseInt("10");
하지만 문제가 있습니다.파스를 사용하여 "010"을 변환하려고 하면int 함수는 8진수로서 검출되어 번호8을 반환합니다.따라서 기수를 지정해야 합니다(2~36).이 경우 베이스 10입니다.
parseInt(string, radix)
예:
var result = parseInt("010", 10) == 10; // Returns true
var result = parseInt("010") == 10; // Returns false
:parseInt는 유효한 데이터를 해석한 후 불량 데이터를 무시합니다.
GUID 51로 됩니다.
var result = parseInt('51e3daf6-b521-446a-9f5b-a1bb4d8bac36', 10) == 51; // Returns true
javascript에서 문자열을 숫자로 변환하는 방법은 크게 두 가지가 있습니다.한 가지 방법은 해석하는 것이고 다른 방법은 유형을 숫자로 변경하는 것입니다.다른 답변의 모든 트릭(예: 단항 플러스)은 문자열 유형을 숫자에 암묵적으로 강제하는 것을 포함합니다.Number 함수를 사용하여 동일한 작업을 명시적으로 수행할 수도 있습니다.
해석
var parsed = parseInt("97", 10);
parseInt 와 parseFloat 는 문자열에서 번호로 해석하기 위해 사용되는 두 가지 함수입니다.파싱은 인식되지 않는 문자에 닿으면 자동으로 정지합니다.이것은 "92px"와 같은 문자열을 해석하는 데 유용할 수 있지만 잘못된 입력에 대해 어떠한 오류도 발생하지 않기 때문에 다소 위험합니다.그 대신 문자열이 숫자로 시작하지 않는 한 NaN을 반환합니다.문자열 시작 부분에 있는 공백은 무시됩니다.다음은 사용자가 원하는 것과 다른 작업을 수행하면서 문제가 발생한 징후를 보이지 않는 예입니다.
var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97
기수를 항상 두 번째 인수로 지정하는 것이 좋습니다.오래된 브라우저에서는 문자열이 0으로 시작하면 기수가 지정되지 않으면 8진수로 해석되어 많은 사람이 깜짝 놀랐습니다.되지 않은 16진수 0x로 시작됨).0xff5와 변경되었기 되지 않은 경우 않습니다.ecmascript 5는 0입니다이됩니다.parseInt는 36입니다.이 경우 대소문자 모두 동등하게 취급됩니다.
문자열 유형을 숫자로 변경
위에서 설명한 parseInt를 사용하지 않는 다른 모든 트릭은 문자열을 숫자에 암묵적으로 강제하는 것을 포함합니다.난 이걸 분명히 하고 싶지만
var cast = Number("97");
이것은 해석 방식과는 다른 동작입니다(단, 공백은 무시합니다). 줄 줄다리를 돌려주는 보다 더 엄격해요. 반환되는 것보다 문자열 전체를 이해하지 못하는 경우NaN 하다, 하다, 하다, 하다, 하다, 하다 같은 수 97px. 객체가 에 Number wrapper "는 Number wrapper ", "number wrapper "는new넘버 ㅇㅇㅇㅇㅇㅇㅇㅇㅇㅇ.
Number로 변환하면 정수가 아닌 부동값이 제공되므로 정수를 원할 경우 수정해야 합니다.여기에는 몇 가지 방법이 있습니다.
var rounded = Math.floor(Number("97.654")); // other options are Math.ceil, Math.round
var fixed = Number("97.654").toFixed(0); // rounded rather than truncated
var bitwised = Number("97.654")|0; // do not use for large numbers
모든 비트 연산자(여기에서는 비트 단위로 실행했지만 이전 응답이나 비트 시프트에서와 같이 이중 부정을 수행할 수도 있음)는 값을 32비트 정수로 변환하고 대부분의 연산자는 부호 있는 정수로 변환합니다.이렇게 하면 큰 정수에 대해서는 원하지 않습니다.정수를 32비트로 나타낼 수 없는 경우 랩됩니다.
~~"3000000000.654" === -1294967296
// This is the same as
Number("3000000000.654")|0
"3000000000.654" >>> 0 === 3000000000 // unsigned right shift gives you an extra bit
"300000000000.654" >>> 0 === 3647256576 // but still fails with larger numbers
더 큰 숫자에 대해 올바르게 작업하려면 반올림 방법을 사용해야 합니다.
Math.floor("3000000000.654") === 3000000000
// This is the same as
Math.floor(Number("3000000000.654"))
하므로 강압은 Infinity를 이해한다는 점에 하십시오.2e2200해석하다
관습
이 방법들 중 어느 것도 당신이 원하는 대로 되지 않을 것 같습니다.예를 들어, 일반적으로 해석에 실패하면 오류가 발생하며, Infinity, 지수 또는 선행 공백에 대한 지원은 필요하지 않습니다.사용 사례에 따라 사용자 지정 변환 함수를 작성하는 것이 적절할 수 있습니다.
반드시 Number 또는 구문 분석 방식의 출력이 예상하는 숫자의 종류인지 확인하십시오.은 거의 '어느 정도'를 사용하고 입니다.isNaN번호가 NaN이 아닌 것을 확인합니다(통상은 해석에 실패했음을 알 수 있는 유일한 방법입니다).
ParseInt()와 +는 다르다.
parseInt("10.3456") // returns 10
+"10.3456" // returns 10.3456
가장 빠른
var x = "1000"*1;
시험
다음은 속도 비교입니다(Mac OS만 해당).:)
크롬 'plus'와 'mul'이 가장 빠르며(> 700,000,00 op/sec), 'Math.floor'가 가장 느리다.Firefox의 경우 'plus'가 가장 느립니다(! 'mul'이 가장 빠릅니다(> 900,000,000 op/초).Safari '파스 내Int'는 고속, number'는 가장 느립니다(단, resulats는 13,000,000 < 31,000,000).따라서 Safari에서 int로의 캐스트 문자열은 다른 브라우저보다 10배 이상 느립니다.그래서 승자는 '물'입니다.
이 링크는 브라우저 상에서 https://jsperf.com/js-cast-str-to-number/1 에서 실행할 수 있습니다.
갱신하다
도 시험해봤어var x = ~~"1000";는 - Chrome 는 Safari보다 조금 .var x = "1000"*1(<1% 미만) Firefox가 조금 더 빠릅니다(<1% 미만).합니다.
오래된 질문이긴 하지만 누군가에게 도움이 될 수도 있어요
이 방법으로 스트링을 변환합니다.
인트 넘버
var str = "25"; // string
var number = str*1; // number
따라서 1을 곱해도 값은 변경되지 않지만 js는 자동으로 숫자를 반환합니다.
이 '아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아str는 숫자입니다(또는 숫자로 나타낼 수 있습니다).NaN을 사용하다
사용하기 쉬운 기능을 만들 수 있습니다.
function toNumber(str) {
return str*1;
}

parseInt 를 사용해 주세요.
var number = parseInt("10", 10); //number will have value of 10.
제가 틀린 답을 여기에 올렸습니다. 죄송합니다. 수정했습니다.
오래된 질문이지만, 저는 이 트릭을 좋아합니다.
~~"2.123"; //2
~~"5"; //5
이중 비트 음수는 소수점 뒤에 있는 모든 항목을 드롭하고 숫자 형식으로 변환합니다.함수 호출 등보다 약간 빠르다고 들었는데, 완전히 납득이 가지 않습니다.
편집: 방금 본 다른 방법(javascript > > > > > operator에 대한 질문)은 이 연산자를 사용하여 0으로 숫자를 이동하면 uint32로 변환되므로 서명하지 않아도 좋습니다.이 경우에도 부호 없는 정수로 변환되므로 부호 있는 숫자를 사용하면 이상한 동작이 발생할 수 있습니다.
"-2.123" >>> 0; // 4294967294
"2.123" >>> 0; // 2
"-5" >>> 0; // 4294967291
"5" >>> 0; // 5
Javascript에서는 다음 작업을 수행할 수 있습니다.
ParseInt
parseInt("10.5") //returns 10
1의 곱셈
var s = "10";
s = s*1; //returns 10
단항 연산자(+) 사용
var s = "10";
s = +s; //returns 10
비트 연산자 사용
합니다.)2140000000 ::-~~"2150000000" = -2144967296)
var s= "10.5";
s = ~~s; //returns 10
Math.floor() 또는 Math.ceil() 사용
var s = "10";
s = Math.floor(s) || Math.ceil(s); //returns 10
파스를 사용할 경우 주의한다.과학적 표기법으로 플로트를 변환하려면 Int!예를 들어 다음과 같습니다.
parseInt("5.6e-14")
결과적으로
5
대신
0
아래의 예를 참조해 주세요.의심을 푸는 데 도움이 될 거야
Example Result
parseInt("4") 4
parseInt("5aaa") 5
parseInt("4.33333") 4
parseInt("aaa"); NaN (means "Not a Number")
parseint 함수를 사용하여 문자열이 아닌 정수의 op만 제공합니다.
또, 사이드 노트로서 다음과 같습니다.Mootools에는 임의의 네이티브 문자열(또는 float(또는 정수))에서 사용되는 Int() 함수가 있습니다.
"2".toInt() // 2
"2px".toInt() // 2
2.toInt() // 2
사용할 수 있다+(stringOfNumber) ''를 사용하는 대신.parseInt(stringOfNumber)
::+("21")의 int와 를 반환합니다.parseInt("21").
이 단항 "+" 연산자를 float 구문 분석에도 사용할 수 있습니다.
문자열을 정수로 변환하려면 parseInt가 아닌 parseFloat을 사용하는 것이 좋습니다.이유는 다음과 같습니다.
parseFlat 사용:
parseFloat('2.34cms') //Output: 2.34
parseFloat('12.5') //Output: 12.5
parseFloat('012.3') //Output: 12.3
해석 사용내부:
parseInt('2.34cms') //Output: 2
parseInt('12.5') //Output: 12
parseInt('012.3') //Output: 12
파싱에 주목하셨다면int는 소수점 뒤에 있는 값을 폐기합니다.parseFloat에서는 부동소수점 번호로 작업할 수 있으므로 소수점 뒤에 값을 유지하는 것이 더 적합합니다.해석 사용int는 정수값을 필요로 하는 경우에만 입력합니다.
JavaScript에는 문자열을 숫자 값으로 변환하는 여러 가지 방법이 있습니다.모두 심플하고 편리한 방법으로 원하는 방법을 선택할 수 있습니다.
var num = Number("999.5"); //999.5
var num = parseInt("999.5", 10); //999
var num = parseFloat("999.5"); //999.5
var num = +"999.5"; //999.5
또한 산술 연산은 숫자를 숫자로 변환합니다. 예를 들어...
var num = "999.5" / 1; //999.5
var num = "999.5" * 1; //999.5
var num = "999.5" - 1 + 1; //999.5
var num = "999.5" - 0; //999.5
var num = Math.floor("999.5"); //999
var num = ~~"999.5"; //999
는 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★+ JavaScriptsign - JavaScript에서 입니다.
★★를 해 보세요.str - 0string로로 합니다.number.
> str = '0'
> str - 0
0
> str = '123'
> str - 0
123
> str = '-12'
> str - 0
-12
> str = 'asdf'
> str - 0
NaN
> str = '12.34'
> str - 0
12.34
다음은 문자열을 int로 변환하는 여러 가지 방법의 성능을 비교하는 두 가지 링크입니다.
https://jsperf.com/number-vs-parseint-vs-plus
http://phrogz.net/js/string_to_number.html
여기 가장 쉬운 해결책이 있습니다.
let myNumber = "123" | 0;
보다 간단한 솔루션
let myNumber = +"123";
제 생각에는 모든 엣지 케이스를 커버하는 답변은 없습니다.플로트를 해석하면 오류가 발생하기 때문입니다.
function parseInteger(value) {
if(value === '') return NaN;
const number = Number(value);
return Number.isInteger(number) ? number : NaN;
}
parseInteger("4") // 4
parseInteger("5aaa") // NaN
parseInteger("4.33333") // NaN
parseInteger("aaa"); // NaN
은 '우리'를 사용하는 입니다.+
const strTen = "10"
const numTen = +strTen // string to number conversion
console.log(typeof strTen) // string
console.log(typeof numTen) // number
구글이 이 답을 줬어, 그래서...
C와 JavaScript 간의 바인딩을 위해 문자열을 정수로 "저장"해야 하므로 문자열을 정수 값으로 변환합니다.
/*
Examples:
int2str( str2int("test") ) == "test" // true
int2str( str2int("t€st") ) // "t¬st", because "€".charCodeAt(0) is 8364, will be AND'ed with 0xff
Limitations:
max 4 chars, so it fits into an integer
*/
function str2int(the_str) {
var ret = 0;
var len = the_str.length;
if (len >= 1) ret += (the_str.charCodeAt(0) & 0xff) << 0;
if (len >= 2) ret += (the_str.charCodeAt(1) & 0xff) << 8;
if (len >= 3) ret += (the_str.charCodeAt(2) & 0xff) << 16;
if (len >= 4) ret += (the_str.charCodeAt(3) & 0xff) << 24;
return ret;
}
function int2str(the_int) {
var tmp = [
(the_int & 0x000000ff) >> 0,
(the_int & 0x0000ff00) >> 8,
(the_int & 0x00ff0000) >> 16,
(the_int & 0xff000000) >> 24
];
var ret = "";
for (var i=0; i<4; i++) {
if (tmp[i] == 0)
break;
ret += String.fromCharCode(tmp[i]);
}
return ret;
}
function parseIntSmarter(str) {
// ParseInt is bad because it returns 22 for "22thisendsintext"
// Number() is returns NaN if it ends in non-numbers, but it returns 0 for empty or whitespace strings.
return isNaN(Number(str)) ? NaN : parseInt(str, 10);
}
플러스 사용 가능.예를 들어 다음과 같습니다.
var personAge = '24';
var personAge1 = (+personAge)
을 볼 수.typeof personAge1즉 ; ,,number.
JavaScript에서 문자열에서 숫자로:
Unary + (가장 권장)
+numStr다른 제품과 비교하여 사용하기 쉽고 성능도 우수함- 정수와 소수점 모두 지원
console.log(+'123.45') //=> 123.45
기타 옵션:
구문 분석 문자열:
parseInt(numStr)의 경우parseFloat(numStr)에
console.log(parseInt('123.456')) //=> 123
console.log(parseFloat('123')) //=> 123
JavaScript 함수
- 은 하다, 하다, 하다와 같은 기능을 .
round(numStr),floor(numStr),ceil(numStr)의 경우 Number(numStr)에
console.log(Math.floor('123')) //=> 123
console.log(Math.round('123.456')) //=> 123
console.log(Math.ceil('123.454')) //=> 124
console.log(Number('123.123')) //=> 123.123
단항 연산자
- 기본 연산자 " " " "
+numStr,numStr-0,1*numStr,numStr*1,numStr/1 - 모두 정수와 소수점을 모두 지원합니다.
- 에 be be be about be 에 주의해 주세요.
numStr+0, 문자열이
console.log(+'123') //=> 123
console.log('002'-0)//=> 2
console.log(1*'5') //=> 5
console.log('7.7'*1) //=> 7.7
console.log(3.3/1) //=>3.3
console.log('123.123'+0, typeof ('123.123'+0)) //=> 123.1230 string
비트 연산자
- 칠데 2 †
~~numStrshift 0 입니다.numStr<<0 - 소수점은 지원하지 않고 정수만 지원합니다.
console.log(~~'123') //=> 123
console.log('0123'<<0) //=> 123
console.log(~~'123.123') //=> 123
console.log('123.123'<<0) //=> 123
// parsing
console.log(parseInt('123.456')) //=> 123
console.log(parseFloat('123')) //=> 123
// function
console.log(Math.floor('123')) //=> 123
console.log(Math.round('123.456')) //=> 123
console.log(Math.ceil('123.454')) //=> 124
console.log(Number('123.123')) //=> 123.123
// unary
console.log(+'123') //=> 123
console.log('002'-0)//=> 2
console.log(1*'5') //=> 5
console.log('7.7'*1) //=> 7.7
console.log(3.3/1) //=>3.3
console.log('123.123'+0, typeof ('123.123'+0)) //=> 123.1230 string
//bitwise
console.log(~~'123') //=> 123
console.log('0123'<<0) //=> 123
console.log(~~'123.123') //=> 123
console.log('123.123'<<0) //=> 123
또 다른 옵션은 XOR 값을 그 자체로 2배로 하는 것입니다.
var i = 12.34;
console.log('i = ' + i);
console.log('i ⊕ i ⊕ i = ' + (i ^ i ^ i));
다음과 같이 출력됩니다.
i = 12.34
i ⊕ i ⊕ i = 12
문자열 앞에 플러스(+) 하나만 더하면 해결이 됩니다!
+"052254" //52254
도움이 되었으면 좋겠다;)
자릿수의 곱셈과 각각의 10의 거듭제곱을 합하면 다음과 같습니다.
즉, 123 = 100 + 20 + 3 = 1 * 100 + 2 + 10 + 3 * 1 = 1 * ( 10^2) + 2 * ( 10^1) + 3 * ( 10^0 )
function atoi(array) {
// use exp as (length - i), other option would be to reverse the array.
// multiply a[i] * 10^(exp) and sum
let sum = 0;
for (let i = 0; i < array.length; i++) {
let exp = array.length-(i+1);
let value = array[i] * Math.pow(10,exp);
sum+=value;
}
return sum;
}
올바른 정수를 얻는 가장 안전한 방법은 다음과 같습니다.
let integer = (parseInt(value, 10) || 0);
예:
// Example 1 - Invalid value:
let value = null;
let integer = (parseInt(value, 10) || 0);
// => integer = 0
// Example 2 - Valid value:
let value = "1230.42";
let integer = (parseInt(value, 10) || 0);
// => integer = 1230
// Example 3 - Invalid value:
let value = () => { return 412 };
let integer = (parseInt(value, 10) || 0);
// => integer = 0
위의 내용은 모두 맞습니다.문자열에 있는 숫자인지 확인하기 전에 "typeot x === 'number'를 사용하십시오. 그렇지 않으면 NaN이 반환됩니다.
var num = "fsdfsdf242342";
typeof num => 'string';
var num1 = "12423";
typeof num1 => 'number';
+num1 = > 12423`
function doSth(){
var a = document.getElementById('input').value;
document.getElementById('number').innerHTML = toNumber(a) + 1;
}
function toNumber(str){
return +str;
}
<input id="input" type="text">
<input onclick="doSth()" type="submit">
<span id="number"></span>
나는 이것을 사용한다.
String.prototype.toInt = function (returnval) {
var i = parseInt(this);
return isNaN(i) ? returnval !== undefined ? returnval : - 1 : i;
}
이렇게 하면 난 항상 내 뒤를 봐줄 수 있어
언급URL : https://stackoverflow.com/questions/1133770/how-to-convert-a-string-to-an-integer-in-javascript
'programing' 카테고리의 다른 글
| 도커에서 분리 실행 시 Python 앱이 인쇄되지 않음 (0) | 2022.10.14 |
|---|---|
| 사용자가 위로 스크롤하지 않는 한 오버플로 div를 아래로 스크롤 유지 (0) | 2022.10.14 |
| 텍스트에서 모든 공백 제거 (0) | 2022.10.04 |
| MySQL Select Date Equal to Today(데이터 유형으로 날짜 지정) (0) | 2022.10.04 |
| 발생한 예외 유형을 판별하려면 어떻게 해야 합니까? (0) | 2022.10.04 |
