2014-10-27 18 views
0

我有這樣的代碼在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

_「應該是100」_爲什麼?您將100除以7. – j08691 2014-10-27 14:52:48

+0

您期待什麼結果? http://jsfiddle.net/5zr7fz0z/ – 2014-10-27 14:53:21

+0

@ j08691它應該是應該是14.25 – newbie 2014-10-27 14:57:03

回答

2

toFixed函數返回一個字符串,所以使用+運算符執行字符串連接而不是加法。

要得到你是(幾乎)預計,調用toFixed添加後,像這樣的14.26值:

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

然而,amt已經是一個浮動,因此似乎並不彷彿這裏需要parseFloat

+1

值得注意的是,您可以通過在它前面放置一個Unary Plus('+')符號來將其轉換回數字,如下所示:'+(excess.toFixed(2))'。 – 2014-10-27 14:54:52

+0

在這裏看到文檔:[toFixed](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed) – BeNdErR 2014-10-27 14:56:54

+1

@BeNdErR我的回答已經包含該鏈接 – Spooky 2014-10-27 14:58:11

相關問題