带提示的两个数字的总和

IT技术 javascript sum prompt
2021-02-10 10:13:36

过去几天我一直在尝试解决这个问题:当我对通过提示输入的 2 个数字进行减、乘或除时,一切正常;但是当我想添加它们时,我将两个数字简单地写在一起。

例子:如果我把 5 和 6 相加,我得到 56!

这是我正在使用的代码。

var a = prompt("Enter first number");
var b = prompt("Enter second number");

alert(a + b);

我究竟做错了什么?我必须指定值类型吗?

6个回答

该函数prompt返回一个字符串并且+是(不明智,也许)用于两个字符串连接和数目相加。

您不在 JavaScript 中“指定类型”,但您可以在运行时进行字符串到数字的转换。有很多方法可以做到这一点。最简单的是:

var a = +prompt("Enter first number");
var b = +prompt("Enter second number");
alert(a + b);

但你也可以这样做

var a = Number(prompt("Enter first number"));
var b = Number(prompt("Enter second number"));
alert(a + b);

(避免,parseInt因为它只处理前导字符,不会像 4.5 和 2.6 这样的数字相加。)

parseFloat将处理 4.5,但也可以尝试使用 4.5xyz。你愿意接受吗?如果没有,请坚持Number或使用简单的+.
2021-03-22 10:13:36
我猜 parseFloat 会吗?
2021-04-06 10:13:36

问题在于 JavaScript 是松散类型的。因此,它不知道“5”实际上是一个数字,因为您从提示中收到的所有内容都是字符串。

你可以做:

var a = prompt("1st") * 1;
var b = prompt("2nd") * 1;

alert (a + b);

这是有效的,因为 * 运算符强制一切都像数字一样。

您正在使用串联运算而不是算术运算符。

在你上面的代码中:

alert(a + b);

您的浏览器编译器会将其视为串联。所以它连接了两个字符串。这就是为什么你会得到那个输出。

当您输入 var a 和 var b 时,变量可能设置为字符串(字符)而不是整数。

因此,当您使用 时,您a + b会将这些字符放在一起。

为了确保您输入的值保存为整数,您可以使用

parseInt()

例如: var a = parseInt( prompt("Enter first number") );

试试这个 ,

var a = prompt("Enter first number");
var b = prompt("Enter second number");
var x=parseInt(a);
var y=parseInt(b);

alert(x+y);