2014-11-28 4 views
0

У меня проблема здесь о моем javascript. Этот javascript хорошо работает, но проблема в том, что его запуск не включал десятичные места, которые вводит пользователь. Например пользователь поставил 13.2-10. Ответ должен быть 3.2 обрядом. Но выходной результат равен 3. Он не вычисляет десятичные знаки. Поэтому, если кто-то может помочь, это было бы действительно оценено. Это мой JavaScript:Как сделать десятичные разряды в операции

$(window).load(function(){ 
    function calcSubMTotal(p) { 
     var minus = 0; 
     var isFirst=true; 
     var minus_total = $('#' + p + ''); 

     $('.' + p + '').each(function (i) { 
      if (!isNaN(this.value) && this.value.length !== 0) { 
       if(!isFirst) 
        minus -= parseInt(this.value); 
       else 
       { 
        minus=parseInt(this.value); 
        isFirst=false; 
       } 
      } 
     }); 

     minus_total.val(minus); 
    } 

    $('input[type=text]').on('keyup', function() { 
     calcSubMTotal("rr"); 
    }); 
}); 
+1

Вы должны использовать parseFloat вместо parseInt. –

ответ

1

Вы используете parseInt, который будет возвращать целые числа. Вместо этого используйте parseFloat.

Обратите внимание, что это приведет некоторые некоторые (возможно) неожиданные результаты, так как в JavaScript:

13.2 - 10 == 3.1999999999999993 

Это на самом деле правильно, так что, когда вы показываете, вы, вероятно, хотите сделать что-то вроде:

minus_total.val(minus.toFixed(2)); 

С:

(13.2 - 10).toFixed(2) == "3.20" 
+0

Большое спасибо. Но могу ли я узнать, как получить результат в 2-х значащих цифрах? –

+0

Ах, уже добавили записку об этом :). Вы имели в виду * значащую цифру * или * десятичные знаки *? – Hamish

+0

Да. Я имею в виду значительную цифру. Еще раз спасибо. Это работает. –

1

Целые не имеют десятичные места, попробуйте parseFloat() вместо parseInt()

+0

Спасибо. Я понял. –

0

Вы должны использовать parseFloat вместо parseInt.

Смежные вопросы