Как округлить результаты parseFloat в Jquery / Javascript? - PullRequest
9 голосов
/ 29 марта 2012

Как бы я округлил значение из текстового поля с результатом parseFloat? Это приложение в основном суммирует значение всех переключателей при нажатии и отображает сумму в текстовом поле.

Приведенный ниже код отлично работает, если значение переключателя является целым числом, однако, если я хочу, чтобы значение переключателя было с плавающей запятой, общее значение будет иметь значение 100.0000000679, когда оно должно быть 100. Любые советы будут очень цениться. Заранее спасибо.

function calcscore(){
  var score = 0;
  $(".calc:checked").each(function(){
    score+=parseFloat($(this).val(),10);
  });
  $("input[name=openingsum]").val(score);
}
$().ready(function(){
    $(".calc").change(function(){
        calcscore();
    });
});

HTML код:

<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="0" />No

1 Ответ

11 голосов
/ 29 марта 2012

Сначала я думаю, что вы предоставили нам другой пример, чем ожидалось.Если вы сообщите нам что-то о получении 100.0000000679, а в вашем коде есть только значение 1.6666666666666666666666666666667, значит, что-то не так:)

Поэтому я надеюсь, что ваша проблема только в правильном округлении.Для этого вы можете использовать .toFixed()

См. Пример на jsfiddle

HTML:

<input class="calc" name="v1" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes
<input class="calc" name="v1" type="radio" onclick="ver2(this);" value="0" />No
<br>
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes
<input class="calc" name="v2" type="radio" onclick="ver2(this);" value="0" />No
<br>
<input class="calc" name="v3" type="radio" onclick="ver2(this);" value="1.6666666666666666666666666666667" />Yes
<input class="calc" name="v3" type="radio" onclick="ver2(this);" value="0" />No
<br>
<input type="text" name="openingsum">​

JAVASCRIPT:

function calcscore(){
  var score = 0;
  $(".calc:checked").each(function(){
    score+=parseFloat($(this).val(),10);
  });
  score = score.toFixed(2);
  $("input[name=openingsum]").val(score);
}
$().ready(function(){
    $(".calc").change(function(){
        calcscore();
    });
});​
...