变量不会 Math.floor();

Variable will not Math.floor();

我想要一个变量每秒更新为 Math.floor(jeans + jps) 的值,其中 jeans 是牛仔裤的数量,jps 是每秒生产的牛仔裤数量。

这是我脚本中的代码片段:

setInterval(function() { 
    var prefloor = (jeans + jps);
    jeans = Math.floor(prefloor);
}, 1000);

但是,这不会改变 jeans 的值。不过,以下确实改变了它:

setInterval(function() { 
    var prefloor = (jeans + jps);
    jeans = prefloor;
}, 1000);

我做错了什么?

问题是,如果 delta 值 (jps) <= 1,则该值将降低为 0。因此,牛仔裤的值将发生变化 0,从而保持不变。

这是一个 JSFiddle,其中 Jeans 的值在 jsp >= 1 时发生变化:

JSFiddle

这个值工作正常,但十进制值会向下舍入,从而导致一些不一致。

修复

要获得您可能正在寻找的行为,您要做的是创建一个精确的变量(未四舍五入),然后在显示时将该值下限。

例如:

var jeans=0;
var jps=0;

element.onclick=function(){jps+=0.2}

setInterval(function(){
  jeans+=jps;
  document.getElementById("jcount").innerHTML=Math.floor(jeans);  //use Math.floor only for display
},1000)

Updated JSFiddle

你的 tailors 变量在第 15 行设置为 0。在第 19 行,你写

jps = (tailors*0.2);

这等于 jps = (0 * 0.2) 并且获得裁缝++的唯一方法是买东西,但是这至少需要 20 个,这是永远不会发生的。设置 tailers = 1,您的计数将开始。

(这还不是一个有效的答案,因为计数不是它应该的样子(没有下降)但是我不能在没有 50 Rep 的情况下写评论。抱歉)