用户输入的Javascript梯形面积计算,结果不正确

用户输入的Javascript梯形面积计算,结果不正确,javascript,area,Javascript,Area,我正在尝试制作一个javascript程序来计算梯形的面积。下面是我的js代码: var lol=prompt("Please enter which 2d polygon you would like this awesome calculator to calculate.") if(lol==="trapezoid"){ var tr1=prompt("Enter the top base.") var tr2=prompt("Enter the bottom base."

我正在尝试制作一个javascript程序来计算梯形的面积。下面是我的js代码:

var lol=prompt("Please enter which 2d polygon you would like this awesome calculator to calculate.")
if(lol==="trapezoid"){
    var tr1=prompt("Enter the top base.")
    var tr2=prompt("Enter the bottom base.")
    var tr3=prompt("Now enter the height.")
    confirm((tr1+tr2)*(tr3)/2)
}
但当我把4,5,6放进计算器时,结果是135而不是27


为什么?

您可以使用
parseInt
将值设置为整数

var lol=prompt("Please enter which 2d polygon you would like this awesome calculator to calculate.")
if(lol==="trapezoid"){
    var tr1=Number(prompt("Enter the top base."))
    var tr2=Number(prompt("Enter the bottom base."))
    var tr3=Number(prompt("Now enter the height."))
    confirm((tr1+tr2)*(tr3)/2)
}
下面是一个带有Benjamine的
数字
点的JSFIDLE


从提示符返回的值是字符串,正如Ryan p所说,“1”+“1”=“11”

您需要做的是在计算中使用字符串的值之前将其转换为整数

您可以使用
Number()
函数执行此操作。

因此,您的代码可能是:

confirm((Number(tr1) + Number(tr2)) *(Number(tr3))/2)
或者,使用一元加速记:

confirm((+tr1 + +tr2)*(+tr3)/2)

确认((+tr1++tr2)*(+tr3)/2)
“4”+“5”=“45”,而不是9为什么投了反对票?OP提出了一个合理的问题,他们试图解决这个问题。@JackZelig看看这个问题的初始编辑。啊,好的。它似乎已经被整理了一些…没有基数参数的parseInt是有风险的,可能需要指定基数,尽管您希望允许十进制数,所以可能选择
Number