-1

这是代码

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++ 人,我在这里缺少一些明显的东西。我只是在谷歌上找不到它。

那么我必须为其分配一个类型还是有另一种方法来强制算术加法?

4

3 回答 3

4

您需要parseFloat()orNumber()返回的字符串prompt()

于 2013-08-07T17:01:32.343 回答
2

的结果prompt()将是一个字符串。如果将数字添加到字符串,则该数字将转换为字符串并执行连接。

要将字符串转换为浮点数,请使用以下方法之一:

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
于 2013-08-07T17:03:31.900 回答
1
if (amt != null) m.p1 += Number(amt);

这应该可以解决您的问题。

于 2013-08-07T17:03:37.667 回答