闫振

博客园 首页 联系 订阅 管理

今天在项目中遇到了一个很有趣的问题,在JS中浮点数的计算,例如1.6*3.5-5.6=?

结果出人意料等于8.881784197001252e-16....开始很迷茫,难道计算器都不准了?

经过查找终于发现问题,JS里1.6*3.5=5.60000000005..于是在减去5.6就变成一个十六进制的数了

怎么解决呢?解决就简单了,把相乘结果截取两位小数就OK了.

//测试JS计算
        var getResult = function () {
            var a = 1.6;
            var b = 3.5;
            var c = 5.6;
            //alert(a * b);
            var temp = parseFloat(a * b).toFixed(2);
            //alert(a * b - c);
            alert(temp - c);
        }

只是个小问题,希望大家能多注意,特别是做财务方面软件的^_^