0

注文を出荷するために必要な各ボックスの最小数を表示する方法を見つけようとしています。ほとんどの作業を完了しましたが、まだプログラムを終了できないようです。jsでこれまでに持っているものは次のとおりです。

var calculate_boxes = function() {

    var dvds = parseFloat($("dvds").value);

    //Be sure the value entered is a positive number.

    var cave =  dvds / 24;
    dvds = dvds % 24;    

    var bakers =  dvds / 13;
    dvds = dvds % 13;   

    var dimes =  dvds / 10;
    dvds = dvds % 10;

    var quads =  dvds / 10;
    dvds = dvds % 10;

    var twins = dvds / 4;
    dvds = dvds % 4;

    var minis = dvds / 1;
    dvds = dvds % 1;    

        cave   = parseInt($("cave").value);
    bakers  = parseInt($("bakers").value);
    dimes   = parseInt($("dimes").value);
    quads   = parseInt($("quads").value);
    twins   = parseInt($("twins").value);
    minis   = parseInt($("minis").value);

}
4

1 に答える 1

1

のような変数を設定していますvar cave = dvds / 24;が、関数の後半でこれらの変数を次のような値で上書きしますcave = parseInt($("cave").value);- あなたがしようとしているのは、cave変数に現在格納されている 10 進値を整数に変換することだと思いますが、 jQuery コード$("cave").valueでは、コードが実際に行うことは、「cave」というタグ名を持つ要素を選択しようとすることです。つまり、<cave>その値を取得し、その値を に渡しますparseInt

JavaScript では、いくつかのMathメソッドの 1 つを使用して、10 進数を整数に変換できます。使用するメソッドは、切り上げるか、切り下げるか、または最も近い整数にするかによって異なります。

現在の目的では、常に切り捨てたいので、を使用してMath.floor()ください。関数の最後に別の操作として実行する必要はありません。すぐに実行してください。

var cave = Math.floor(dvds / 24);
dvds %= 24; // note that dvds %= 24 is equivalent to dvds = dvds % 24

var bakers = Math.floor(dvds / 13);
dvds %= 13;

// etc

また、おそらく「クワッド」は 4 で除算し、「ツイン」は 2 で除算する必要があります。

また、なぜparseFloat()関数の最初から開始するのかわかりません。分数の DVD を注文できるのは意味がありません。現在不足している正の数のみの検証に加えて、整数が入力されたことを確認する必要があります。

また、「ミニ」の最終的な計算では、1 による無意味な除算を行っています。その段階minis = dvdsで、DVD が残っていないことがわかっているため、次の行で無意味な剰余演算も必要ありません。

上記の変更を適用して問題を解決すればparseInt()、目標にかなり近づくはずです。試してみて、少し試してみて、それでもうまくいかない場合は、ご連絡ください。

于 2011-12-13T01:23:40.467 に答える