2014-10-10 36 views
1

我正在模拟使用Javascript的计算器。JavaScript - 无法正确添加2个数字

用户可以在给定的文本框中输入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 

任何想法有什么错在这里?

+1

它们被当作字符串对待,因为它们将它们连接在一起。尝试使用'parseInt()'。 – Goose 2014-10-10 22:04:47

+0

但其他操作正常。它分割正确,减去正确,并且正确地相乘 – Ishita 2014-10-10 22:05:41

+0

因为'+'也用于连接字符串,并且如果等式的任何部分是字符串,它将这样做。 – Goose 2014-10-10 22:06:40

回答

6

因为+也是JavaScript中的字符串Concatinater。使用parseInt(var1)+ parseInt(var2)它将起作用。也可以看看--->Javascript Operators

了解+运算符。 谢谢

1

尝试

console.log("Sum = " + (parseInt(num1) + parseInt(num2))); 

console.log("Sum = " + (0 + num1 + num2)); 

也确保你调用的函数一样

calculate(4, 3); 

,而不是

calculate('4', '3'); 
2

如果你在文本框中的数字他们被视为字符串,所以+运算符将做字符串连接。运算符并不意味着与字符串有关的任何东西,所以JavaScript引擎会尝试将输入解释为数字。

您可以在输入上使用parseInt将它们转换为数字,或者使用html number输入类型。

1

至少有一个calculate()的输入是字符串。 +被定义为字符串,所以变成43.虽然没有为字符串和Javascript定义“/巧妙”地将它们转换为int。