2014-10-10 41 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。