2017-07-07 72 views
0

我有一個html表單,用戶在5個輸入字段(一週中的幾天)中添加小時。自動計算包括小數的值

總時數顯示在表格的底部。

這是爲了圓個小時工作正常,但添加類似7.4總被四捨五入它7

時請看下圖: 有沒有一種方法來添加小數嗎?

$(document).ready(function() { 
 
    $('.calc').change(function() { 
 
    var total = 0; 
 
    $('.calc').each(function() { 
 
     if ($(this).val() != '') { 
 
     total += parseInt($(this).val()); 
 
     } 
 
    }); 
 
    $('#total').html(total); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" class="form-control calc" name='mon'> 
 
<input type="text" class="form-control calc" name='tue'> 
 
<span id="total"></span>

+4

使用'parseFloat' – MysterX

+0

這會去哪裏? – TheMan

+3

而不是'parseInt' – MysterX

回答

1

正如@MysterX指出,則在用戶的輸入轉換爲整數(整數)的形式。 parseFloat將佔小數位數。

+0

謝謝你完美工作。只需要補充一點,是否有一種方法可以將其顯示爲2位小數? – TheMan

+0

是的,限制你想做parseFloat($(this).val())。toFixed(2); – infamoustrey

0

您需要使用parseFloat而不是因爲parseInt將四捨五入。

total += parseFloat($(this).val()); 

>>Sample Demo<<

+0

請使用''''''代碼編輯器,而不是JSFiddle所以答案保持在這裏 – mplungjan

+0

當然,我們可以做到 – Ravi

1

爲了得到小數,而不是一個長期的和醜陋的浮數,改變這一行

total += parseInt($(this).val()); 

對此

total += parseFloat($(this).val()); 

而改變這一行

$('#total').html(total); 

至此

$('#total').html(total.toFixed(2)); //If you want two decimals 
+0

長而醜的浮動只發生在乘法和除法。 – mplungjan

+0

@mplungjan,但我不認爲我應該假設收到的號碼都很好,並被截斷。 –