Учитывая число (или строку, представляющую число), почему бы просто не сделать это:
var number;
var output = (Math.round(number * 100) / 100).toFixed(2);
В вашем случае, похоже, вы хотите:
$('#a_is_valid').one('click', function(){
if ($('#code_promo').val() == 'promocode')
{$('#gtotal').val((Math.round($('#gtotal').val() * 75) / 100).toFixed(2));
Math.round (достаточно правильно) округляет до ближайшего целого числа, поэтому вам придется немного поколдовать. Умножьте на 10 ^ (количество знаков после запятой, которое вы хотите) - в вашем случае 10 ^ 2 или 100, округлите, а затем разделите на то же число.
В примере, который я сделал специально для вас, вы заметите, что я умножаю на 75: 0,75 * 100.
Возможно, проще всего увидеть это с помощью функции:
function roundToNPlaces(n, val) {
var multiplier = Math.pow(10, n);
return (Math.round(val * multiplier) / multiplier).toFixed(n);
}
Затем вы можете просто установить gtotal следующим образом:
$('#gtotal').val(roundToNPlaces(2, $('gtotal').val() * 0.75));
См. этот FIDDLE.
Видеть:
- Math.round ПРИМЕЧАНИЕ. В этой документации представлена реализация, аналогичная (но более сложная) коду, который я дал. Если вы скопируете весь их пример
Decimal rounding
в свой код (до того, как вам понадобится его использовать в первый раз), вы можете просто использовать Math.round10($('#gtotal').val() * .75, -2);
. См. http://jsfiddle.net/aW44n/1/.
- исправлено
person
Scott Mermelstein
schedule
25.11.2013
.fixed()
, и кажется, что Google показывает, что плагины, использующие этот метод, предназначены для позиционирования элементов на странице, а не для указания десятичной точки (математика). - person Crayon Violent   schedule 25.11.2013