2017-09-19 38 views
-1

我是一個JavaScript初學者。我們的老師要求我們編寫一個程序,使用函數add()添加兩個數字。問題如下所示。在javascript函數中添加兩個數字

但是,當我使用我的代碼來添加這兩個數字。結果不是一個數字。

<html> 
 
    <head> <title> Third example </title> 
 
    <script type="text/javascript"> 
 
    function sum (x,y) 
 
    { num1=parseInt(x); 
 
    \t num2=parseInt(y); 
 
    \t return (num1+num2);} 
 
    var input1 = window.prompt("Enter a number: ", 0); 
 
    var input2 = window.prompt("Enter another number: ", 0); 
 
    var input3 = window.prompt("Enter another number: ", 0); 
 
    var value1 = parseFloat(input1 + input2); 
 
    var value3 = parseFloat(input3); 
 
    var sum = sum(value1 + value3); 
 
    document.writeln("<h1> First number: " + value1 + "</h1>"); 
 
    document.writeln("<h1> Second number: " + value3 + "</h1>"); 
 
    document.writeln("<h1> Sum: " + sum + "</h1>"); 
 
    </script> 
 
    <head> 
 
    <body></body> </html>

爲什麼總和不是一個數字?

+0

可能重複[Javascript函數添加兩個數字不正確](https:// stackoverflow。com/questions/11565569/javascript-function-to-add-two-numbers-not-working-right) –

+3

var sum = sum(value1,value3);除此之外,還有其他一些錯誤,parseFloat在您檢索字符串時也是錯誤的。 – Adriani6

+0

@AKA:您不必通過評論發佈答案來通知OP。同樣的通知系統也首先提醒他們答案。 – David

回答

2

當您計算value1的總和時,您必須單獨爲input1input2添加parseFloat()。另一個變化是var sum = sum1(value1 , value3);而不是var sum = sum1(value1 + value3);,它使參數ysum(x,y)undefined

var input1 = window.prompt("Enter a number: ", 0); 
 
var input2 = window.prompt("Enter another number: ", 0); 
 
var input3 = window.prompt("Enter another number: ", 0); 
 
var value1 = parseFloat(input1) + parseFloat(input2); 
 
var value3 = parseFloat(input3); 
 
var sum = sum1(value1 , value3); 
 
document.writeln("<h1> First number: " + value1 + "</h1>"); 
 
document.writeln("<h1> Second number: " + value3 + "</h1>"); 
 
document.writeln("<h1> Sum: " + sum + "</h1>"); 
 

 
function sum1 (x,y) 
 
{ 
 
    return (x+y); 
 
}

此外,如Adriani6提到因爲你已經指定一個解析浮子value1value3

+0

不要忘記刪除'debugger'行 – assembler

+0

感謝@assembler注意到這一點。 –

+0

還應該注意的是,您不需要在sum1內部再次解析浮動,因爲您已將已分析的浮動值分配給value1和value3。 – Adriani6

0

你的錯誤,你不需要再parseFloat裏面SUM1看到這裏:

sum(value1 + value3) 

sum函數需要單獨的參數,並在內部執行加法,但是在將它們發送到函數之前將它們在線添加。由於只有一個值發送到sum(),因此其第二個參數是undefined,因此「不是數字」。簡單地分隔值:

sum(value1, value3) 

,你可能還沒有注意到的其他錯誤是在這裏:

parseFloat(input1 + input2) 

如果輸入12例如,這樣的結果將是12 。這是因爲你在之前將字符串「連接」(連接)爲,因爲它將它們轉換爲數字值。先轉換它們,然後添加它們。事情是這樣的:

var value1 = parseFloat(input1) + parseFloat(input2); 

除此之外代碼大概可以清理多一點,如不需要你正在做的解析。 (一旦某個東西被解析爲一個數字值,它不需要再次被解析爲一個數值)。你也可以很好地查看頁面上元素的設置值,而不是使用諸如document.writeln()之類的東西,但是可能是另一天的教訓。

0

因爲在Javascript中,+運算符被重載,即具有多種含義,具體取決於您給它的參數。 +表示字符串的連接和「數字」的附加(用於不同類型的數字)。