<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
。
为什么?
答案 0 :(得分:25)
这是因为浮点数学与你的parseInt()
一起工作的方式。请参阅Is floating point math broken。
当它达到0.29
时,它会0.29 x 100
,您期望得到29
,但实际上是:{/ p>
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);
}