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变量中的十进制值转换为整数,但是通过使用jQuery 代码$("cave").value您的代码实际上所做的是尝试选择一个带有标签名称“cave”的元素,即,<cave>并获取它的值,然后将该值传递给parseInt.

在 JavaScript 中,您可以使用几种数学方法之一将小数转换为整数- 使用哪一种取决于您是要向上、向下还是最接近的整数。

对于您当前的目的,您总是希望向下舍入,所以使用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 是没有意义的。除了当前缺少的仅正数验证之外,您还需要检查是否输入了整数。

此外,您对“minis”的最终计算是对 1 进行无意义的除法:在那个阶段,您知道minis = dvds没有剩余的 dvd,因此您也不需要在下一行进行无意义的模运算。

如果您应用上述更改并摆脱这些parseInt()东西,您应该更接近您的目标:尝试并尝试一下,如果仍然不起作用,请回复我们。

于 2011-12-13T01:23:40.467 回答