2009-10-28 45 views
0

我幾乎有這個工作,但腳本四捨五入我的數字,而我希望保留兩個小數位的全價,而不是自動四捨五入。我此腳本沙箱是在這裏:Javascript數學顯示小數位

http://www.zacharydesigns.com/sandbox/calculatorJS2.html

這裏是代碼:

<script type="text/javascript"> 

function update1() { 
    var a = +document.forms['calc'].elements['productOne'].value, 
     b = +document.forms['calc'].elements['productTwo'].value, 
     c = +document.forms['calc'].elements['productThree'].value, 
     productTotal = Math.floor(a/(a+b+c)*399.99); 

    document.forms['calc'].elements['productTotal1'].value = productTotal; 

    return false; 
} 

function update2() { 
    var a = +document.forms['calc'].elements['productOne'].value, 
     b = +document.forms['calc'].elements['productTwo'].value, 
     c = +document.forms['calc'].elements['productThree'].value, 
     productTotal = Math.floor(b/(a+b+c)*399.99); 

    document.forms['calc'].elements['productTotal2'].value = productTotal; 

    return false; 
} 

function update3() { 
    var a = +document.forms['calc'].elements['productOne'].value, 
     b = +document.forms['calc'].elements['productTwo'].value, 
     c = +document.forms['calc'].elements['productThree'].value, 
     productTotal = Math.floor(c/(a+b+c)*399.99); 

    document.forms['calc'].elements['productTotal3'].value = productTotal; 

    return false; 
} 
</script> 

<form name="calc" action="#"> 

<table align="center" 
border="1"><tr><td align="right">Boots: </td> 
<td align="left"><input type="text" name="productOne" size="5" /> 
</td> 
<td colspan="2" align="center"> 
<input type="button" value="Calculate" 
onclick="update1();" /> </td> 
<td align="right">Product Total:</td><td align="left"> 

<input type="text" name="productTotal1" size="6" 
readonly="readonly" /></td> 
</tr> 
<tr> 
<td align="right">Bindings: </td> 
<td align="left"><input type="text" name="productTwo" size="5" /> 
</td> 
<td colspan="2" align="center"> 
<input type="button" value="Calculate" 
onclick="update2();" /> </td> 
<td align="right">Product Total:</td><td align="left"> 

<input type="text" name="productTotal2" size="6" 
readonly="readonly" /></td> 
</tr><tr> 
<td align="right">Boards: </td> 
<td align="left"><input type="text" name="productThree" size="5" /> 
</td> 
<td colspan="2" align="center"> 
<input type="button" value="Calculate" 
onclick="update3();" /> </td> 
<td align="right">Product Total:</td><td align="left"> 

<input type="text" name="productTotal3" size="6" 
readonly="readonly" /></td> 
</tr><tr></tr> 

</tr> 
</table></form> 

有人可以告訴我,我怎麼能有數學上充分一些操作不四捨五入呢?

+0

考慮使用小數庫:http://stackoverflow.com/questions/744099/javascript-bigdecimal-library/1575569 – 2009-10-29 06:34:17

回答

3

我認爲問題在於你正在使用floor操作符。地板運營商總是向下取整爲最接近的整數這樣:

floor(3.5) == 3 
floor(5.9999999999999999999999999999) = 5 
floor(5) = 5 

而且我覺得你得到的漂移。你想要做的是格式化小數位,並且toFixed()函數就是爲了這個。

因此,基本上,改這些行:

productTotal = Math.floor(c/(a+b+c)*399.99); 

要:

productTotal = (c/(a+b+c)*399.99).toFixed(2); 

而且我認爲這將是你想要的。