<head>
<title></title>
<script type="text/javascript">
function disp() {
var j = parseFloat(document.getElementById("ttt").value);
document.getElementById("ttt").value = (j + 0.01).toFixed(2);
}
function setIt() {
document.getElementById("ttt").value = 0;
setInterval(disp, 200);
}
</script>
</head>
<body >
<input id="ttt" type="text" />
<input id="bbb" type="button" value="start" onclick="setIt()"/>
</body>
</html>测试代码如上
disp方法中(j + 0.01).toFixed(2)这句是固定浮点数精度为小数点后2位。
如果没有toFixed,便会出现递增过程中浮点数精度很长的问题。
简单测试如下
alert(0.1 + 0.2 == 0.3);//false
//这为什么呢?
alert(0.1 + 0.2);//0.30000000000000004
//这是计算机中浮点数按二进制存储,有些无限循环数据造成不精确,python、javascript等都会有这个问题。
另外,提一句,关于0.1 + 0.2 == 0.3的比较,最好使用
0.1+0.2-0.3<0.0000000001(某一个精度值)做判断。
原文:http://smartwang.blog.51cto.com/3270660/1363376