我希望它每次选中(浇注)复选框时,都会通过增加额外的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'转换为*字符串*然后转换为浮点数。 –