我正在使用Javascript模拟计算器。
用户可以在给定的文本框中输入2个数字,它将显示总和,产品,差异和除法。
这是我的功能 -
function calculate(num1, num2) {
console.log("First Number = " + num1 + " Second Number = " + num2);
console.log("Sum = " + (num1 + num2));
console.log("Product =" + (num1 * num2));
console.log("Difference = " + (num1 - num2));
console.log("Division = " + (num1 / num2));
}
当用户输入第一个数字4和第二个数字3时,我得到这个结果:
First Number = 4 Second Number = 3
Sum = 43 // sum should be 7 NOT 43
Product = 12
Difference = 1
Division = 1.3333333333333333
这里有什么问题吗?
答案 0 :(得分:6)
因为+也是JavaScript中的String Concatinater。使用parseInt(var1)+ parseInt(var2)它将起作用。还看看---> Javascript Operators
理解+运算符。 感谢
答案 1 :(得分:2)
如果您在文本框中输入数字,则会将其视为字符串,因此+
运算符将执行字符串连接。 *
运算符与字符串无关,因此javascript引擎会尝试将输入解释为数字。
您可以在输入上使用parseInt将它们转换为数字,或使用html number
输入类型。
答案 2 :(得分:1)
试
console.log("Sum = " + (parseInt(num1) + parseInt(num2)));
或
console.log("Sum = " + (0 + num1 + num2));
还要确保您正在调用
这样的功能calculate(4, 3);
而不是
calculate('4', '3');
答案 3 :(得分:1)
您对calculate()的至少一个输入是字符串。 +是为字符串定义的,所以变为43.虽然* / - 没有为字符串定义而Javascript“巧妙地”将它们转换为int。