2017-09-19 36 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中,+运算符被重载,即具有多种含义,具体取决于您给它的参数。 +表示字符串的连接和“数字”的附加(用于不同类型的数字)。