关于js做浮点数加法的问题
<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(某一个精度值)做判断。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。