0

私は現在、コーディングクラスの紹介を受けており、JS を使用しています。私のコードは優れていますが、割引出力では常に NAN を取得するため、何かが欠けています。なぜこれが起こっているのか誰にも分かりますか?

//Input
var orderAmount = prompt("What is the order amount?");
var contractor = prompt("Are you a contractor? yes/no?");
var employee = prompt("Are you an employee? yes/no?");
var age = prompt("How old are you?");
//Constant
var employeeDisc = .10;
var largeOrderDisc = .05;
var contractorDisc = .20;
var taxRate = .08;
var noTax = 0;
//Calculations
    if (orderAmount >= 800) {
        var discounta = orderAmount * largeOrderdisc;
    }else {
        var discounta = 0;
    }
    if (contractor == "yes") {
        var discountc = orderAmount * contractorDisc;
    }else if(contractor == "no") {
        var discountc = 0;
    }
    if(employee == "yes") {
        var discounte = orderAmount * employeeDisc;
    }else if(emplyee == "no") {
        var discounte = 0;
    }
var discount = discountc + discounte + discounta;
var subtotal = orderAmount - discount;
    if (age >= 90){
        tax = subtotal * noTax;
    }else {
        tax = subtotal * taxRate;
    }
total = subtotal - tax;
//Output
document.write("Original Price: $" + orderAmount);
document.write("Discount: $" + discount);
document.write("Subtotal: $" + orderAmount);
document.write("Tax: $" + tax);
document.write("Final Price: $" + total);
document.write("Final Price: $" + total);

コンパイルされていないコードについて申し訳ありません。現在は修正されています。今の問題は、私の document.write が書いていないことです。

4

5 に答える 5

2

文字列を使用して算術計算と比較を実行しようとしています。 NaNこれは、失敗した算術演算 (ゼロによる除算や NaN の計算など) の数値結果です。

以下では、文字列ではなく数字を使用していることに注意してください。

var employeeDisc = .10;
var largeOrderDisc = .05;
var contractorDisc = .20;
var taxRate = .08;
var noTax = 0;
//Calculations
if (orderAmount >= 800) {
    var discounta = orderAmount * largeOrderdisc;
} else {
    var discounta = 0;
}


さらに、prompt()文字列を返します。計算を実行する前に、それを数値に変換する必要があります。parseInt()おそらくまたはを使用したいでしょうparseFloat()

を生成する簡単な例を次に示しますNaN

var x = 'x5';
var y = '2';
var difference = x - y;
console.log( difference );  // Note: you can use console.log() to write messages to the console in your browser's developer tools.  It is handy for debugging.
于 2013-07-13T15:02:49.940 に答える
0

Javascript では、数値ではないデータに対して数学演算を実行しようとすると、常に NaN(Not a Number) が返されます。数値ではなく文字列を返すステップを確認する必要があります

于 2013-07-13T15:04:08.500 に答える
0

これは、if 句で割引変数を宣言しているためです。if 句の外で定義すれば問題ありません。

var discounta;
if (a > b) {
   discounta = 0.1;
}
else {
   discounta = 0.2;
}

また、JavaScript の変数スコープも確認してください。

于 2013-07-13T15:04:23.970 に答える