<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>Run Code Online (Sandbox Code Playgroud)
如您所见,计时器最多只计算0.29.
为什么?
MrC*_*ode 25
这是因为浮点数学与你的数学相结合的方式parseInt().请参阅浮点数学是否已损坏.
当它达到时0.29,它确实0.29 x 100会产生,29但实际上它是:
console.log(0.29 * 100);
28.999999999999996
Run Code Online (Sandbox Code Playgroud)
接下来,将它转换为一个整数,使用parseInt()该整数导致28(删除所有小数位),最后1通过100生成结果进行加法和除法,0.29并且在计时器的每个刻度上重复此操作,数字不能增加.
最好将原始值存储为变量并使用它来输出.toFixed(2),而不是使用UI上的数字作为源.像这样:
var num = 0.00;
window.setInterval(function () {
timer();
}, 100);
function timer() {
num = ((num * 100) + 1) / 100;
document.getElementById("timer").innerHTML = num.toFixed(2);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
629 次 |
| 最近记录: |