2011-09-21 76 views
2

我明白,JS數學並不完美。但是我怎樣才能得到正確的答案呢?因爲我有一個價格爲0.60美分的購物車,它們可以改變數量?不正確的乘法答案

var a=3*.6; 
document.write(a); 

寫道:1.7999999999999998

很顯然,我想寫1.8。任何想法如何做到這一點?

回答

8

只需使用toFixed就可以使其變爲ba CK:

var a = 3*.6; 
document.write(a.toFixed(2)); 

如果你需要它作爲一個數字,只是之前它添加一個+標誌:

var a = 3*.6; 
console.log(+a.toFixed(2)); // Logs: 1.8, instead of "1.80" 
+0

令人敬畏的功能。甚至不知道它存在。我想我會用它來取代我寫的格式貨幣的功能 –

+0

+1很好@Joseph –

+0

感謝您的'+'! – ray

0

寫.6分數:a=3*6/10,你會得到1.8

作爲一個更一般的規則,你可以嘗試四捨五入到最接近的百萬分之一與
Math.round(result*1000000)/100000,看到什麼,讓你。

1
var a=3*.6; 
a = Math.round(a*10)/10; 
document.write(a); 

由於要舍入到地方十分之,則需要通過10乘以數量,一輪乘法最接近的整數的結果,然後由10

劃分結果這不是性感,但你必須做什麼,必須做。

1
var a=(3*(.6*100))/100; 
document.write(a); 

實施例:http://jsfiddle.net/aJTJq/

  1. 乘以100 0.6,以獲得60美分
  2. 乘上3
  3. 除以100它以使其返回作爲美元的數字
0

你想要做的是有某種類型的四捨五入的功能。

試試這個: 四捨五入功能

<script language="javascript" type="text/javascript"> 
function roundNumber(rnum, rlength) { // Arguments: number to round, number of decimal places 
    var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength); 
    document.roundform.numberfield.value = parseFloat(newnumber); // Output the result to the form field (change for your purposes) 
} 
</script> 

然後像這樣調用函數

<form name="roundform"> 
<input type="text" name="numberfield" value=""> 
<input type="button" value="Round" onClick="roundNumber(numberfield.value, 2);"> 
</form> 

這個例子只是需要在文本字段輸入一個數字,並確保它是四捨五入到小數點後兩位。

這是從http://www.mediacollege.com/internet/javascript/number/round.html

採取有更多的例子此鏈接爲好。希望這有助於。 乾杯