[javascript] 두 문자열을 숫자처럼 추가하는 방법은 무엇입니까?

숫자 만 포함하는 두 개의 문자열이 있습니다.

var num1 = '20',
    num2 = '30.5';

나는 그것들을 함께 추가 할 수있을 것으로 기대했지만 대신 연결되어 있습니다.

num1 + num2; // = '2030.5'

이 문자열을 숫자로 취급하도록하려면 어떻게해야합니까?



답변

단항 더하기 연산자를 사용하여 먼저 숫자로 변환합니다.

+num1 + +num2;


답변

구문 분석 용 MDN 문서 구문 분석 용

MDN 문서

parseInt에서는 기수가 10으로 지정되어 기본 10에 있습니다. 엄격하지 않은 자바 스크립트에서 앞에 붙는 숫자 0는 8 진수로 처리됩니다. 이것은 분명히 문제를 일으킬 것입니다!

parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)

단항 연산자를 사용하는 유용한 바로 가기는 ChaosPandion의 답변을 참조하십시오 . 다른 행동을 보여주기 위해 바이올린을 설정했습니다.

http://jsfiddle.net/EtX6G/

var ten = '10';
var zero_ten = '010';
var one = '1';
var body = document.getElementsByTagName('body')[0];

Append(parseInt(ten) + parseInt(one));
Append(parseInt(zero_ten) + parseInt(one));
Append(+ten + +one);
Append(+zero_ten + +one);

function Append(text) {
    body.appendChild(document.createTextNode(text));
    body.appendChild(document.createElement('br'));
}


답변

단항 더하기 연산자를 사용하여 코드를 다음과 같이 더 읽기 쉽도록 괄호 안에 숫자로 취급하도록 강제하는 것이 좋습니다.

(+varname)

따라서 귀하의 경우 :

var num1 = '20',
    num2 = '30.5';

var sum = (+num1) + (+num2);

// Just to test it
console.log( sum ); // 50.5


답변

var result = Number(num1) + Number(num2);


답변

로 문자열을 변환 floatsparseFloat(string)나에게 integersparseInt(string)


답변

매우 큰 숫자 인 두 개의 문자열을 함께 추가해야하는 경우 모든 문자열 위치에서 추가를 평가해야합니다.

function addStrings(str1, str2){
  str1a = str1.split('').reverse();
  str2a = str2.split('').reverse();
  let output = '';
  let longer = Math.max(str1.length, str2.length);
  let carry = false;
  for (let i = 0; i < longer; i++) {
    let result
    if (str1a[i] && str2a[i]) {
      result = parseInt(str1a[i]) + parseInt(str2a[i]);

    } else if (str1a[i] && !str2a[i]) {
      result = parseInt(str1a[i]);

    } else if (!str1a[i] && str2a[i]) {
      result = parseInt(str2a[i]);
    }

    if (carry) {
        result += 1;
        carry = false;
    }
    if(result >= 10) {
      carry = true;
      output += result.toString()[1];
    }else {
      output += result.toString();
    }
  }
  output = output.split('').reverse().join('');

  if(carry) {
    output = '1' + output;
  }
  return output;
}


답변

이것을 사용하여 숫자를 추가 할 수 있습니다.

var x = +num1 + +num2;