gpt4 book ai didi

javascript - 计时器在 0.29 后停止

转载 作者:行者123 更新时间:2023-12-02 08:30:11 24 4
gpt4 key购买 nike

    <head>
<script>
window.setInterval(function(){timer()},100);
function timer()
{
document.getElementById("timer").innerHTML=
(parseInt(document.getElementById("timer").innerHTML*100)+1)/100;
}
</script>
</head>
<body>
<div id="timer">0.000</div>
</body>

如您所见,计时器最多只能计数 0.29

为什么会这样?

最佳答案

这是因为 float 学与 parseInt() 结合使用的方式。引用Is floating point math broken .

当它达到 0.29 时,它会执行 0.29 x 100,您期望结果为 29,但实际上它是:

console.log(0.29 * 100);
28.999999999999996

接下来,使用 parseInt() 将其转换为整数,结果为 28(删除所有小数位),最后添加 1 并除以 100,得到结果 0.29,并且在计时器的每个滴答声上重复此操作,数字不会增加。

最好将原始值存储为变量并使用 .toFixed(2) 输出,而不是使用 UI 上的数字作为源。像这样:

<强> Fiddle

var num = 0.00;

window.setInterval(function () {
timer();
}, 100);

function timer() {
num = ((num * 100) + 1) / 100;
document.getElementById("timer").innerHTML = num.toFixed(2);
}

关于javascript - 计时器在 0.29 后停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23568843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com