-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.p138.7 ではなく 37.71 になります。

次に 1.0 と入力すると、37.711.0 が表示されます。加算ではなく連結を行っていることがわかりました。型を宣言する方法を見つけようとしましたが、オブジェクトの変数で使用する方法がわかりません。

私はどちらかというと C++ 派なので、ここで明らかに欠けているものがあります。Googleで見つけられないだけです。

それで、型を割り当てる必要がありますか、それとも算術加算を強制する別の方法はありますか?

4

3 に答える 3

4

parseFloat()またはNumber()によって返される文字列が必要ですprompt()

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

これで問題が解決するはずです。

于 2013-08-07T17:03:37.667 に答える