为什么float在javascript中成为字符串

时间:2014-10-27 14:50:16

标签: javascript

我在javascript中有这个代码:

var childrenSize = 7;

    var flAmt = parseFloat(100);
    var amt   = parseFloat(flAmt/childrenSize);

    //Rounding-off fix
    var newAmt = (amt.toFixed(2))*childrenSize;
    alert(newAmt);
    var excess = 0;
    if(newAmt != flAmt)
        excess = parseFloat(flAmt - newAmt);
    amt = parseFloat(amt) + excess.toFixed(2);
    alert(amt);

amt应为14.25。但相反,它变成了14.285714285714286-0.03 ...为什么? 另外,我如何改进我的代码?

1 个答案:

答案 0 :(得分:2)

toFixed函数返回一个字符串,因此使用+运算符执行字符串连接而不是添加。

要获得您(几乎)期望的14.26的值,请在添加后调用toFixed,如下所示:

amt = (parseFloat(amt) + excess).toFixed(2);

但是,amt已经是浮点数,所以看起来好像不需要parseFloat