Javascript 如何像数字一样添加两个字符串?

Javascript 如何像数字一样添加两个字符串?,javascript,Javascript,我有两个只包含数字的字符串: var num1 = '20', num2 = '30.5'; 我本以为可以将它们添加到一起,但它们却被连接在一起: num1 + num2; // = '2030.5' 如何强制将这些字符串视为数字? 在parseInt中,基数被指定为10,因此我们以10为基数。在非严格javascript中,以0开头的数字被视为八进制。这显然会引起问题 parseInt(num1, 10) + parseInt(num2, 10) //base10 parseF

我有两个只包含数字的字符串:

var num1 = '20',
    num2 = '30.5';
我本以为可以将它们添加到一起,但它们却被连接在一起:

num1 + num2; // = '2030.5'
如何强制将这些字符串视为数字?


在parseInt中,基数被指定为10,因此我们以10为基数。在非严格javascript中,以
0
开头的数字被视为八进制。这显然会引起问题

parseInt(num1, 10) + parseInt(num2, 10) //base10
parseFloat(num1) + parseFloat(num2)
另请参见Chaospanion的答案,了解使用快捷键的有用快捷方式。我摆好了一把小提琴来展示不同的行为


使用
parseFloat(string)
将字符串转换为
float
,或使用
parseInt(string)
将字符串转换为
整数。

我将首先使用一元加号运算符将其转换为数字

+num1 + +num2;

您可以使用
parseInt
将字符串解析为数字。为了安全起见,始终将
10
作为第二个参数传递给base 10进行解析

num1 = parseInt(num1, 10);
num2 = parseInt(num2, 10);
alert(num1 + num2);

使用
parseFloat
方法将字符串解析为浮点数:

parseFloat(num1) + parseFloat(num2)
试一试

或者,根据您的需要:

var x = parseInt(num1) + parseInt(num2) ;

你可能想拿起道格拉斯·克罗克福德的书。Javascript有一个相当大的gotchas集合!这本书有助于澄清这些问题。另见


以及Crockford先生的优秀论文。

我建议使用一元加号运算符,强制将最终字符串视为数字,在括号内,使代码更可读,如下所示:

(+varname)
因此,在您的情况下:

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

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

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

如果您正在寻找简单的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>
输入第一个数字:
输入第二个号码:
函数调用(){ var q=parseInt(document.getElementById(“num1”).value); var w=parseInt(document.getElementById(“num2”).value); var结果=q+w; }

有关更多详细信息,请访问

确保最终答案的小数位数小于16位,因为java脚本有缺陷

比如说
5-7.6=-2.599999999996

您可以使用此选项添加数字:

var x = +num1 + +num2;

我总是减去零

num1-0 + num2-0;

虽然一元运算符方法少了一个字符,但并不是每个人都知道一元运算符是什么,也不是每个人都知道如何在不知道它的名称时通过谷歌搜索找到它。

我在我的项目中使用了这个方法。我使用+符号将字符串视为一个数字(在with_Interest变量中)


函数computeLoan(){
var amount=document.getElementById('amount')。值;
var利率=document.getElementById(“利率”).value;
var days=document.getElementById('days').value;
风险值利息=(金额*(利率*.01))/天;
风险值支付=((金额/天数)+利息)。toFixed(2);
带利息的风险值=(金额*(利率*.01));
有利息的风险值=(+金额*(利率*.01))+(+金额);
payment=payment.toString()。替换(/\B(?=(\d{3})+(?!\d))/g,“,”;
document.getElementById('payment').innerHTML=“Target Daily=PHP”+付款;
document.getElementById('with_Interest')。innerHTML=“Amount w/Interest=PHP”+with_Interest;
}
您可以在提交前使用此计算器
贷款金额:菲律宾比索

利率:%

术语 40天 50天 60天 70天 80天 90天 100天 120天

希望对您有所帮助

您可以这样使用:

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

alert((num1*1) + (num2*1)); //result 50.5
在num1中应用*1时,将字符串转换为数字

如果num1包含一个字母或逗号,则返回NaN乘以1

如果num1为null,num1返回0


亲切的问候

如果您想使用数字作为字符串执行操作(如数字大于64位的情况),您可以使用库


如果需要将两个非常大的字符串相加,则需要在每个字符串位置计算相加:

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;
}
函数addStrings(str1、str2){
str1a=str1.split(“”).reverse();
str2a=str2.split(“”).reverse();
让输出=“”;
设longer=Math.max(str1.length,str2.length);
让携带=假;
for(设i=0;i=10){
进位=真;
output+=result.toString()[1];
}否则{
output+=result.toString();
}
}
output=output.split(“”).reverse().join(“”);
如果(携带){
输出='1'+输出;
}
返回输出;
}

在这里,您有两种选择:-

1.您可以使用一元加号将字符串数字转换为整数

2.您也可以通过将数字解析为相应的类型来实现。i、 e parseInt()、parseFloat()等

现在,我将通过示例(求两个数字的和)向您展示

使用一元加号运算符

<!DOCTYPE html>
<html>
<body>

<H1>Program for sum of two numbers.</H1>
<p id="myId"></p>
<script>
var x = prompt("Please enter the first number.");//prompt will always return string value
var y = prompt("Please enter the second nubmer.");
var z = +x + +y;    
document.getElementById("myId").innerHTML ="Sum of "+x+" and "+y+" is "+z;
</script>
</body>
</html>

两个数之和的程序。

var x=提示(“请输入第一个数字”)//提示符将始终返回字符串值 var y=提示(“请输入第二个数值”); var z=+x++y; document.getElementById(“myId”).innerHTML=“x+”和“+y+”之和是”+z;
使用解析方法-

<!DOCTYPE html>
<html>
<body>

<H1>Program for sum of two numbers.</H1>
<p id="myId"></p>
<script>
var x = prompt("Please enter the first number.");
var y = prompt("Please enter the second number.");   
var z = parseInt(x) + parseInt(y);
document.getElementById("myId").innerHTML ="Sum of "+x+" and "+y+" is "+z;
</script>
</body>
</html>

两个数之和的程序。

var x=提示(“请输入第一个数字”); var y=提示(“请输入第二个数字”); var z=parseInt(x)+parseInt(y); document.getElementById(“myId”).innerHTML=“x+”和“+y+”之和是”+z;
@cr05s19xx建议重复一个问题:

JavaScript在使用时有点滑稽
var num1 = '20',
    num2 = '30.5';

alert((num1*1) + (num2*1)); //result 50.5
const bigInt = require('big-integer')
bigInt("999").add("1").toString() // output: "1000"
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;
}
function sum(){
    var x,y,z;
    x = Number(document.getElementById("input1").value);
    y = Number(document.getElementById("input2").value);
    z = x + y;
    document.getElementById("result").innerHTML = z ;
}
<!DOCTYPE html>
<html>
<body>

<H1>Program for sum of two numbers.</H1>
<p id="myId"></p>
<script>
var x = prompt("Please enter the first number.");//prompt will always return string value
var y = prompt("Please enter the second nubmer.");
var z = +x + +y;    
document.getElementById("myId").innerHTML ="Sum of "+x+" and "+y+" is "+z;
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<body>

<H1>Program for sum of two numbers.</H1>
<p id="myId"></p>
<script>
var x = prompt("Please enter the first number.");
var y = prompt("Please enter the second number.");   
var z = parseInt(x) + parseInt(y);
document.getElementById("myId").innerHTML ="Sum of "+x+" and "+y+" is "+z;
</script>
</body>
</html>
function myFunction() {
  var per = parseInt(document.getElementById('input1').value);
  var num = parseInt(document.getElementById('input2').value);
  var sum = (num / 100) * per;
  var output = num - sum;

  console.log(output);

  document.getElementById('demo').innerHTML = output;
}

function myFunction2() {
  var per = parseInt(document.getElementById('input3').value);
  var num = parseInt(document.getElementById('input4').value);
  var sum = (num / 100) * per;
  var output = sum + num;

  console.log(output);

  document.getElementById('demo1').innerHTML = output;
}
document.getElementById(currentInputChoosen).value -= +-100;