变量不会 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 时发生变化:
这个值工作正常,但十进制值会向下舍入,从而导致一些不一致。
修复
要获得您可能正在寻找的行为,您要做的是创建一个精确的变量(未四舍五入),然后在显示时将该值下限。
例如:
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)
你的 tailors 变量在第 15 行设置为 0。在第 19 行,你写
jps = (tailors*0.2);
这等于 jps = (0 * 0.2) 并且获得裁缝++的唯一方法是买东西,但是这至少需要 20 个,这是永远不会发生的。设置 tailers = 1,您的计数将开始。
(这还不是一个有效的答案,因为计数不是它应该的样子(没有下降)但是我不能在没有 50 Rep 的情况下写评论。抱歉)
我想要一个变量每秒更新为 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 时发生变化:
这个值工作正常,但十进制值会向下舍入,从而导致一些不一致。
修复
要获得您可能正在寻找的行为,您要做的是创建一个精确的变量(未四舍五入),然后在显示时将该值下限。
例如:
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)
你的 tailors 变量在第 15 行设置为 0。在第 19 行,你写
jps = (tailors*0.2);
这等于 jps = (0 * 0.2) 并且获得裁缝++的唯一方法是买东西,但是这至少需要 20 个,这是永远不会发生的。设置 tailers = 1,您的计数将开始。
(这还不是一个有效的答案,因为计数不是它应该的样子(没有下降)但是我不能在没有 50 Rep 的情况下写评论。抱歉)