2017-04-22 52 views
0

尝试使用功能,在JavaScript中添加三个数字,但它不是增加他们,而不是它只是写他们作为一个数量尝试使用功能,在JavaScript中添加三个数字,但它不是增加他们,而不是它只是写他们作为一个数量

function numinput(a,b,c,res){ 
a = prompt("Enter first number"); 
    b = prompt("Enter second number"); 
    c = prompt("Enter third number"); 

    res = a + b + c ; 
    alert (res); 
} 

numinput(); 
+0

的可能的复制[使用Javascript级联数字,而不是增加了( HTTP://计算器。com/questions/14656003/javascript-concatenating-numbers-not-add-up) – legoscia

回答

2

使用

parseInt函数

值转换为数字。这是一个可行的解决方案。

function numinput(a,b,c,res){ 
 
     a = parseInt(prompt("Enter first number"), 10); 
 
     b = parseInt(prompt("Enter second number"), 10); 
 
     c = parseInt(prompt("Enter third number"), 10); 
 

 
     res = a + b + c ; 
 
     alert (res); 
 
    } 
 

 
    numinput();

+0

这是正确的答案。尽管你可以在每个变量前面使用一元运算符+,但parseInt(var,radix)在人类可读性方面更加明确。 –

+0

@KyleRichardson Yup有+会通过强制来完成这项工作,但是感谢输入伴侣! – HenryDev

0

的每个用户条目typeof string,它被连接成一个整体string。如果要将每个元素添加为Math操作,请使用变量前面的+符号将条目解析为数字,或使用parseInt函数对其进行解析。

function numinput(a, b, c, res) { 
 
    a = prompt("Enter first number"); 
 
    b = prompt("Enter second number"); 
 
    c = prompt("Enter third number"); 
 

 
    res = +a + +b + +c; 
 
    alert(res); 
 
} 
 

 
numinput();

+1

用于一元+运算符。这些天我没有看到很多人在使用它。 :) – Tushar

0

您需要的每一个值,它是一个字符串转换,为数字与一元+

然后我建议将变量声明移动到函数中,而不是在函数的参数中,因为您不需要它们,并且可以在函数内分配值。

function numinput() { 
 
    var a = +prompt("Enter first number"), 
 
     b = +prompt("Enter second number"), 
 
     c = +prompt("Enter third number"), 
 
     res = a + b + c; 
 
     
 
    alert(res); 
 
} 
 

 
numinput();

1

prompt返回string。您需要先转换成字符串编号,否则你是连接字符串:'5' + '7' === '57'

这里有一些方法来实现这一目标:

1 -使用Number

Number('5'); 

2 -使用parseIntparseFloat

parseInt('20', 10); 
parseFloat('5.5'); 

3 -一元+运营商为其他答案解释

+'5' 

工作演示:

function numinput() { 
 
    var a = prompt("Enter first number"), 
 
     b = prompt("Enter second number"), 
 
     c = prompt("Enter third number"), 
 
     res = Number(a) + Number(b) + Number(c); 
 
     
 
    alert(res); 
 
} 
 

 
numinput();

相关问题