не могу добавить два десятичных числа, используя jQuery - PullRequest
11 голосов
/ 03 апреля 2012

Я пытаюсь добавить два десятичных значения, но возвращаемая сумма является чистым целым числом.Что случилось?Я не могу найти это.любая помощь будет приветствоваться.

jQuery(".delivery-method #ship_select").change(function(){
    var cost = jQuery(this).val(); 
    jQuery("#delivery_cost").val(cost); //returns 20.00
    var tot = parseInt(cost) + parseInt(total); //total returns 71.96
});

С кодом я получаю только 91, а не 91.96

Ответы [ 5 ]

30 голосов
/ 03 апреля 2012

Используйте parseFloat() вместо parseInt().

jQuery(".delivery-method #ship_select").change(function(){
    var cost = jQuery(this).val(); 
    jQuery("#delivery_cost").val(cost); //returns 20.00
    var tot = parseFloat(cost) + parseFloat(total); //total returns 71.96
});
7 голосов
/ 03 апреля 2012

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

jQuery(".delivery-method #ship_select").change(function(){
      var cost = jQuery(this).val(); 
      jQuery("#delivery_cost").val(cost); //returns 20.00
     var tot = parseFloat(cost) + parseFloat(total); //total returns 71.96
 });

Проверить демо : http://jsfiddle.net/aDYhX/1/

1 голос
/ 03 апреля 2012

Используйте parseFloat() вместо parseInt()

var tot = parseFloat(cost) + parseFloat(total);

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

function roundNumber(num, dec) {
   var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
   return result;
}

var tot = roundNumber((cost+total), 2);
1 голос
/ 03 апреля 2012

Целочисленные арифметические округления вниз. Вместо этого используйте parseFloat.

1 голос
/ 03 апреля 2012

Используйте parseFloat вместо parseInt и проверьте.

...