2012-02-14 20 views
0

Tried如何用a = 10.3和b = 2.3得到12.6?

var a=10.3; 
var b=2.3; 
alert(a+b); 

,但我得到12.600000000000001。我知道,JavaScript是弱類型的,但我希望我可以做一個總和:)

+0

所以你的問題是關於格式化數與小數的數量有限? – 2012-02-14 08:51:45

+0

這種不準確性是由於[浮點數以二進制表示](http://www.google.com/search?What%20every%20computer%20scientist%20should%20know%20about%20floating-point%20arithmetic) 。 – Gumbo 2012-02-14 08:55:14

回答

1

乘以圓形和除以不管你乘以你想那麼精密:

var a=10.3; 
var b=2.3; 
alert(Math.round((a+b) * 10)/10); 

http://jsfiddle.net/DYKJB/3/

1

這是不是關於打字,而是關於precision of floating point types。你需要輪流介紹。

如果您需要確切的值,浮點類型不是一個好選擇。如果你想表達貨幣價值表示爲美分或使用適當的庫來做到這一點。

2

你可以使用toFixed()方法也

var a=10.3; 
var b=2.3; 
alert((a+b).toFixed(1));​ 

工程在鉻

相關問題