2013-10-01 3 views
0

Я хочу простую форму расчета. Я взял тэ пример W3Schools:html output 2 цифры

и это MYD скорректированный код:

<!DOCTYPE html> 
<html> 
<body> 

<form oninput="x.value=parseFloat(a.value).round(2)* parseFloat(b.value).round(2)"> 
<input type="number" id="a" value="50"> 
+<input type="number" id="b" value="50"> 
=<output name="x" for="a b"></output> 
</form> 

<p><strong>Note:</strong> The output tag is not supported in Internet Explorer.</p> 

</body> 
</html> 

, когда я добавить раунд (2) (форма oninput), то он не будет работать. Если я удалю его, это сработает. Но если я добавлю несколько цифр после десятичного числа, я получаю целую кучу чисел с большим количеством zerro.

Я просто хочу получить 2-значный вывод.

может кто-нибудь мне помочь?

Я также проверка по этой ссылке:

parse float with two decimal places

, но я не могу заставить его работать

ответ

2

Допустим, вы умножая 0.11 и 0.12 - оба числа с двумя знаками после запятой. Результат - 0.132, у которого три. И это предполагает, что вы используете числа, которые могут быть представлены точно: большинство десятичных чисел не могут.

Вместо округления входов, вы должны обогнуть выход:

x.value = (a.value*b.value).round(2); 

Это, как говорится, я не думаю, что round это функция, которая будет использоваться в этом роде. Я думаю, что вам нужно сделать, это:

x.value = Math.round(a.value*b.value*100)/100; 

Обратите внимание, что из-за * автоматически отбрасывает свои аргументы чисел (в отличие от +), нет необходимости явно parseFloat.