我明白,JS數學並不完美。但是我怎樣才能得到正確的答案呢?因爲我有一個價格爲0.60美分的購物車,它們可以改變數量?不正確的乘法答案
var a=3*.6;
document.write(a);
寫道:1.7999999999999998
很顯然,我想寫1.8
。任何想法如何做到這一點?
我明白,JS數學並不完美。但是我怎樣才能得到正確的答案呢?因爲我有一個價格爲0.60美分的購物車,它們可以改變數量?不正確的乘法答案
var a=3*.6;
document.write(a);
寫道:1.7999999999999998
很顯然,我想寫1.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"
寫.6分數:a=3*6/10
,你會得到1.8
作爲一個更一般的規則,你可以嘗試四捨五入到最接近的百萬分之一與
Math.round(result*1000000)/100000
,看到什麼,讓你。
var a=3*.6;
a = Math.round(a*10)/10;
document.write(a);
由於要舍入到地方十分之,則需要通過10乘以數量,一輪乘法最接近的整數的結果,然後由10
劃分結果這不是性感,但你必須做什麼,必須做。
var a=(3*(.6*100))/100;
document.write(a);
實施例:http://jsfiddle.net/aJTJq/
你想要做的是有某種類型的四捨五入的功能。
試試這個: 四捨五入功能
<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
採取有更多的例子此鏈接爲好。希望這有助於。 乾杯
令人敬畏的功能。甚至不知道它存在。我想我會用它來取代我寫的格式貨幣的功能 –
+1很好@Joseph –
感謝您的'+'! – ray