如何添加两个数字?

7
我写了一个JavaScript计算器...但是当我将第一个数字设为2,第二个数字设为3时,结果显示为23,但我想要将这两个数字相加。
请问有人能帮我吗?当我尝试将这两个数字相减时也会发生这种情况。为什么会这样呢?
var cal = prompt("Please enter what type of calculation you want to do\n
if you wanna add enter = 1\n
if you want to minus enter = 2\n
if you want to divide enter = 3\n
if you want to multiply enter = 4");

if (cal == 1) {
    var a = prompt("Please enter your first number");
    var b = prompt("please enter your second number");

    alert("The result is , " + a+b);
}

if (cal == 2) {
    var c = prompt("Please enter your first number");
    var d = prompt("please enter your second number");

    alert("the result is , " + c - d);
}

1
使用 parseInt() 将它们转换为整数值。 - Dipesh Parmar
你可能还想注意到,cal == 1 和 cal == 2 是可以工作的,因为使用双等号时会尝试进行类型转换,而使用三等号时会匹配类型(无论它们是否都是数字以及是否具有相同的值)。 - FabianCook
12个回答

2
尝试一下这个:
var cal = prompt("Please enter what type of calculation you want to do\n" +
  "if you want to add enter = 1\n" +
  "if you want to minus enter = 2\n" +
  "if you want to divide enter = 3\n" +
  "if you want to multiply enter = 4");

if (cal == 1) {
    var a = prompt("Please enter your first number");
    var b = prompt("please enter your second number");

    alert("The result is , " + (Number(a) + Number(b)));
}

else if (cal == 2) {
    var c = prompt("Please enter your first number");
    var d = prompt("please enter your second number");

    alert("the result is , " + (Number(c) - Number(d)));
}

1
"

+符号用于将字符串连接在一起,而不是进行数学加法运算。

您需要使用parseInt()将变量包装起来,例如:

"
alert("The result is , " + parseInt(a)+parseInt(b));

1

从用户接收字符串后,将其转换为数字:

a = parseInt(a, 10);

1
提示返回字符串,您需要将其解析为整数(您也可以使用parseFloat解析浮点数)。 alert("结果是," + (parseInt(a) + parseInt(b)));

1

Prompt方法返回输入的值作为字符串。

因此,在使用Prompt之后使用parseInt(),该函数解析一个字符串并返回一个整数。


1
二进制 + 运算符 有两种用途:加法和字符串连接。虽然你想要前者,但是因为 window.prompt() 返回一个字符串,所以发生了后者。
为避免这种情况,你应该执行以下操作之一(阅读文档以便了解差异):

在尝试进行数字计算之前,最好检查数字是否可以解析(使用{{link1:isNaN(num)}}或可能的num === num),这样您的脚本可以显示有用的错误消息,而不仅仅是将NaN传递到其输出中。


0

试试这个:

let num1 = prompt("Enter the first interger number..");
let num2 = prompt("Enter the second float number...");

let sum = (Number(num1) + Number(num2));
console.log(sum);

目前的回答写得不够清楚。请编辑并添加更多细节,以帮助他人理解如何解答所提出的问题。您可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

0

你正在添加字符串,也称为连接操作,你需要将字符串转换为数字然后将它们相加。

alert("The result is , " + (parseInt(a) + parseInt(b)));

0

使用

alert("The result is , " + (parseFloat(a)+parseFloat(b)));

0

我认为这是因为 var 是一种动态类型变量,所以您的变量会被识别为字符串。

请注意,函数可以接收双精度浮点数,所以使用 parseInt 可能无法正常工作。

function Add(a,b)
{
   var result = null;

   if (isNaN(a) || isNaN(b))
   {
      alert("Please send the number");
      return;
   }

   a = Number(a);
   b= Number(b);

   return a+b;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接