我在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 ...为什么?
另外,我如何改进我的代码?
答案 0 :(得分:2)
toFixed
函数返回一个字符串,因此使用+
运算符执行字符串连接而不是添加。
要获得您(几乎)期望的14.26
的值,请在添加后调用toFixed
,如下所示:
amt = (parseFloat(amt) + excess).toFixed(2);
但是,amt
已经是浮点数,所以看起来好像不需要parseFloat
。