我有两个字符串,其中只包含数字:

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

我本以为我可以把它们加在一起,但它们却被连接起来:

num1 + num2; // = '2030.5'

我如何才能迫使这些字符串被视为数字?


当前回答

使用parseFloat(string)将字符串转换为浮点数或使用parseInt(string)将字符串转换为整数

其他回答

如果您正在寻找简单的Javascript代码,并希望使用两个输入框并从两个值中添加数字,请尝试此方法。这是代码。

    Enter the first number: <input type="text" id="num1" /><br />
    Enter the seccond number: <input type="text" id="num2" /><br />
    <input type="button" onclick="call()" value="Add"/>

    <script type="text/javascript">
    function call(){
    var q=parseInt(document.getElementById("num1").value);
    var w=parseInt(document.getElementById("num2").value);
    var result=q+w;
    }
    </script>

欲了解更多详情,请访问http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html

我总是减去0。

num1-0 + num2-0;

假定一元操作符方法少了一个字符,但并不是每个人都知道一元操作符是什么,或者当他们不知道它被称为什么的时候如何谷歌来找出它。

如果你需要把两个非常大的字符串加在一起,你需要在每个字符串位置计算加法:

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;

如果你想将数字作为字符串来执行操作(就像在数字大于64位的情况下),你可以使用大整数库。

const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"