Javascript математика показать десятичные знаки - PullRequest
0 голосов
/ 29 октября 2009

У меня почти все работает, но скрипт округляет мои числа, в то время как я хочу сохранить оба знака после запятой по полной цене, а не округлять их автоматически. Моя песочница для этого скрипта здесь:

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>

Может, кто-нибудь подскажет, как я могу по математике оперировать полным числом, не округляя его?

1 Ответ

3 голосов
/ 29 октября 2009

Я думаю, что проблема в том, что вы используете оператора пола. Оператор пола всегда округляет до ближайшего целого числа так:

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);

И я думаю, что это будет то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...