javascript - 형변환 - 자바스크립트 숫자 더하기




JavaScript에서 문자열을 정수로 변환하려면 어떻게해야합니까? (14)

JavaScript에서 stringinteger 로 변환하려면 어떻게해야합니까?


Google이 결과로이 답변을 주셨습니다.

사실 문자열을 정수로 저장해야하고, 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;
}

ParseInt ()와 +는 다릅니다.

parseInt("10.3456") // returns 10

+"10.3456" // returns 10.3456

parseInt 함수를 사용해보십시오 :

var number = parseInt("10");

그러나 문제가 있습니다. parseInt 함수를 사용하여 "010"을 변환하려고하면 8 진수로 감지하고 숫자 8을 반환합니다. 따라서 기수 (2에서 36까지)를 지정해야합니다. 이 경우베이스 10.

parseInt(string, radix)

예:

var result = parseInt("010", 10) == 10; // Returns true

var result = parseInt("010") == 10; // Returns false

parseInt를 사용하여 과학 표기법으로 부동을 변환하는 경우주의하십시오! 예 :

parseInt("5.6e-14") 

결과는

5 

대신에

0

가장 간단한 방법은 기본 Number 함수를 사용하는 것입니다.

var x = Number("1000")

그것이 당신을 위해 작동하지 않으면 parseInt , 단항 플러스 , parseFloat with floorMath.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])

문자열이 이미 정수 형식 인 경우 단항 더하기 :

var x = +"1000";

문자열이 float이거나 부동 소수 일 수 있고 정수가 필요한 경우 :

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)

나는 이것을 사용한다.

String.prototype.toInt = function (returnval) { 
    var i = parseInt(this);
    return isNaN(i) ? returnval !== undefined ? returnval : - 1  :      i; 
}

이런 식으로 나는 항상 int int를 얻는다.


다음은 속도 비교 (Mac OS 전용)입니다. :)

'plus'와 'mul'은 chromest가 가장 빠릅니다 (> 700,000,00 op / sec). 'Math.floor'가 가장 느립니다. Firefox의 경우 'plus'가 가장 느립니다 (!) 'mul'은 가장 빠릅니다 (> 900,000,000 op / 초). Safari에서 'parseInt'는 금식하며 '숫자'는 가장 느립니다 (하지만 금액은 1300만이 넘음 <31,000,000>). 따라서 캐스팅 문자열을 int로 변환하는 Safari는 다른 브라우저보다 10 배 이상 느립니다. 따라서 우승자는 ' mul '입니다. :)

이 링크로 브라우저에서 실행할 수 있습니다. https://jsperf.com/casttonumber


또 다른 옵션은 XOR 값을 그 자체로 이중화하는 것입니다 :

var i = 12.34;
console.log('i = ' + i);
console.log('i ⊕ i ⊕ i = ' + (i ^ i ^ i));

그러면 다음과 같이 출력됩니다.

i = 12.34
i ⊕ i ⊕ i = 12

문자열을 숫자 값으로 변환하는 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

내 선호하는 방법은 자바 스크립트에서 문자열을 숫자로 변환하는 우아한 방법 인 + 기호를 사용하는 것이다.


비록 오래된 질문이지만, 아마도 이것은 누군가에게 도움이 될 수 있습니다.

문자열을 정수 로 변환하는이 방법을 사용합니다.

var str = "25";       // string
var number = str*1;   // number

따라서 1을 곱할 때 값은 변하지 않지만 js는 자동으로 숫자를 반환합니다.

그러나 아래에 나와 있듯이 str 이 숫자 (또는 숫자로 나타낼 수 있음)라고 확신하는 경우이 옵션을 사용해야합니다. 그렇지 않으면 숫자가 아니라 NaN이 반환됩니다.

당신은 사용할 간단한 함수를 만들 수 있습니다.

function toNumber(str) {
   return str*1;
}


우리는 parseInt(stringOfNumber) 대신에 +(stringOfNumber) 를 사용할 수 있습니다.

예 : +("21")parseInt("21") 와 같이 21의 int를 반환합니다.

우리는이 단항 "+"연산자를 사용하여 float도 파싱 할 수 있습니다 ...


위의 모든 것이 정확합니다. 그 전에 반드시 "typeot x === 'number'"문자열을 사용하는 숫자 여야합니다. 그렇지 않으면 NaN을 반환합니다.

 var num = "fsdfsdf242342";
 typeof num => 'string';

 var num1 = "12423";
 typeof num1 => 'number';
 +num1 = > 12423`

필자의 의견으로는 float을 구문 분석 할 때 오류가 발생해야하므로 모든 엣지 케이스를 처리 할 수있는 답변이 없습니다.

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





parseint