我希望它每次選中(澆注)複選框時,都會通過增加額外的99便士來更新價格。除非用戶選擇了3個複選框(0.99 * 3),並且它顯示的是2.9699999999999998
而不是2.97,否則這一切都可以正常工作。JavaScript:parseFloat計算不正確
有什麼不對?
HTML:
<label><b>Toppings (99p Each): </b></label><br>
<input type="checkbox" name="onions">Onions</input><br>
<input type="checkbox" name="mushrooms">Mushrooms</input><br>
<input type="checkbox" name="peppers">Peppers</input><br>
<input type="checkbox" name="olives">Olives</input><br>
<input type="checkbox" name="garlic">Garlic</input><br>
<input type="checkbox" name="xtra-cheese">Xtra Cheese</input><br>
<input type="checkbox" name="peperoni">Peperoni</input><br>
的JavaScript:
var pizzaCost = 0.00;
var toppingCost = 0.00;
$('input[type=checkbox]').change(function(){
var checked = $(":checkbox:checked").length;
var checkedInt = parseFloat(checked, 10);
var temp = (0.99 * checkedInt);
toppingCost = parseFloat(temp);
var total = pizzaCost + toppingCost;
$("#totalPrice").text(total);
});
['parseFloat'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat)用於將*字符串*轉換爲浮點值。不像'parseInt',它*不具有第二個參數。 JavaScript實際上沒有針對整數和浮點數的不同類型,它們都是相同的。所以,'parseFloat(checked)'does * nothing *。這實際上將'checked'轉換爲*字符串*然後轉換爲浮點數。 –