2012-04-03 14 views
11

Próbuję dodać dwie wartości dziesiętne, ale zwrócona suma jest liczbą całkowitą. Co jest nie tak? Nie mogę tego znaleźć. każda pomoc będzie mile widziane.nie można dodać dwóch liczb dziesiętnych za pomocą jQuery

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 
}); 

Z kodu Dostaję tylko 91 i nie 91.96

+0

parseInt() zabija wartość przecinka – Neysor

+0

dziękuję rozwiązać problem ... –

Odpowiedz

26

Korzystając parseFloat() zamiast 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 
}); 
1

Użyj parseFloat zamiast parseInt i sprawdź.

1

Integer runda arytmetyczna w dół. Zamiast tego użyj parseFloat.

1

Zastosowanie parseFloat() zamiast parseInt()

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

Ale skoro chcesz ograniczyć się do dwóch miejsc po przecinku ściśle

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); 
7

trzeba użyć parseFloat Zamiast 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 
}); 

Sprawdź Demo: http://jsfiddle.net/aDYhX/1/

Powiązane problemy