关于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(某一个精度值)做判断。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。