2017-06-10 12 views
4

私はこのコードを電卓の一部として書いています。主に意図どおりに動作します。数字で操作を追加

ただし、加算操作では、2つの数値を加算するのではなく連結します。どうして?

function calcApp (aNumber, bNumber) { 
    var a = prompt("Enter A number :"); 
    var b = prompt("Enter B number :"); 
    var mathSign = prompt("Enter Math Sign :"); 

    aNumber = a; 
    bNumber = b; 

    if (mathSign == "+") { 
     alert(a + b); 
    } 
    else if (mathSign == "-") { 
     alert(a - b); 
    } 
    else if (mathSign == "*") { 
     alert(a * b); 
    } 
    else if (mathSign == "/") { 
     alert(a/b); 
    } 
    else { 
     prompt("Enter a valid Math sign!!") 
    } 
} 
calcApp(); 
+1

整数にそれらを解析し、Numberオブジェクトで更新あなたのコードです。 pareseInt –

+0

変数 'aNumber'と' bNumber'は定義されていません。 – zhenguoli

+0

数字ではなく文字列である可能性が最も高いですか? – Bergi

答えて

4

promptは文字列を返します。文字列で+演算子を使用すると、連結されます。

ユーザーの入力の数値を取得する必要があります。あなたはさまざまな方法でそれを行うことができます。

var str = '5.4'; 
 

 
console.log(parseInt(str, 10)); // parse integer from decimal numeric string 
 
console.log(parseFloat(str)); 
 
console.log(+str); 
 
console.log(Number(str));

+1

先頭のゼロを持つ仮定された8進数のため、['parseInt'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt)に基数を加えてください。 –

1

prompt意志は、文字列を返します。番号に変換する必要があります。

Numberオブジェクトを使用すると、文字列を数値に変換できます。

Numberオブジェクトを使用している場合は、NaN(Not-A-Number)をチェックしてください。たとえば、Number('55 abc')は、NaN

小数点を削除する場合は注意してください。たとえば、parseInt('12 .99 ')は12を返します。

はここ

function calcApp (aNumber, bNumber) { 
    var a = prompt("Enter A number :"); 
    var b = prompt("Enter B number :"); 
    var mathSign = prompt("Enter Math Sign :"); 

    aNumber = a; 
    bNumber = b; 

    //Convert to number 
    a = Number(a); <---------- 
    b = Number(b); <---------- 

    if (mathSign == "+") { 
     alert(a + b); 
    } 
    else if (mathSign == "-") { 
     alert(a - b); 
    } 
    else if (mathSign == "*") { 
     alert(a * b); 
    } 
    else if (mathSign == "/") { 
     alert(a/b); 
    } 
    else { 
     prompt("Enter a valid Math sign!!") 
    } 
} 
calcApp(); 
関連する問題