这是代码
var m = new Object();
m.p1 = 37.7;
m.p2 = 37.7;
...
function addSubtract(pn){
switch (pn) {
case 1:
var amt = prompt("Enter a value");
if (amt != null)
{
m.p1 += amt;
}
break;
}
}
基本上当我输入1时,m.p1
的值变为37.71而不是38.7
然后我输入1.0并显示37.711.0。我发现它正在连接而不是添加。 我试图找到一种声明类型的方法,但我无法弄清楚如何在对象的变量中使用它。
我更像是一个C ++人,有一些明显我在这里失踪的东西。我在谷歌上找不到它。
那么我必须为它分配一个类型还是有另一种强制算术加法的方法?
答案 0 :(得分:4)
您需要parseFloat()
或Number()
prompt()
返回的字符串。
答案 1 :(得分:2)
prompt()
的结果将是一个字符串。如果向字符串添加数字,则该数字将转换为字符串,并将执行连接。
要将字符串转换为float,请使用以下其中一项:
var amt = parseFloat(prompt("Enter a value"));
...或:
var amt = +prompt("Enter a value");
...或:
var amt = Number(prompt("Enter a value"));
请注意,在使用parseFloat()
时,最后会忽略任何额外的非数字字符,但在使用一元+
方法或Number()
时,您将获得NaN
如果字符串有额外的字符:
> parseFloat('1.0foo')
1
> +'1.0foo'
NaN
> +'1.0'
1
答案 2 :(得分:1)
if (amt != null) m.p1 += Number(amt);
这可以解决你的问题。