我想自动出现(总金额)(Amount Paid和OtherCharges)的总和我该怎么办?
我的总金额不正确,比如说
支付金额= 100.90
其他费用= 10.1
总金额= 100.91
这是我的代码
$('#AmountPaid, #OtherCharges, #Amount').on('input',function() {
var AmountPaid = parseFloat($('#AmountPaid').val()).toFixed(2);
var OtherCharges = parseFloat($('#OtherCharges').val()).toFixed(2);
var Amount = parseFloat($('#Amount').val()).toFixed(2);
$('#Amount').val(parseFloat(AmountPaid + OtherCharges)).toFixed(2);
});
});
答案 0 :(得分:3)
toFixed
将您的号码变回字符串。当您将+
两个字符串放在一起时,您会得到一个连接字符串,例如100.9010.1
。然后你{{}} parseFloat
,这将忽略无效的部分,然后给你100.901
,这是你toFixed
,哪一轮。我不确定为什么你会得到100.91
的输入(我得到100.90
),但从根本上说这些都是问题。
解决方案是密切关注您何时处理字符串与数字。此外,您可能不希望在输出字段(input
)上挂钩#Amount
,只需要输入字段。
所以:
$('#AmountPaid, #OtherCharges').on('input', function() {
var AmountPaid = parseFloat($('#AmountPaid').val());
var OtherCharges = parseFloat($('#OtherCharges').val());
var Amount = AmountPaid + OtherCharges;
$('#Amount').val(Amount.toFixed(2));
});
直播示例:
$('#AmountPaid, #OtherCharges').on('input', function() {
var AmountPaid = parseFloat($('#AmountPaid').val());
var OtherCharges = parseFloat($('#OtherCharges').val());
var Amount = AmountPaid + OtherCharges;
$('#Amount').val(Amount.toFixed(2));
});

<p>Fill in either of the first two fields, and the third is updated:</p>
<label>
Amount paid:
<input type="text" id="AmountPaid" value="100.90">
</label>
<label>
Other charges:
<input type="text" id="OtherCharges" value="">
</label>
<label>
Amount:
<input type="text" id="Amount" value="">
</label>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
关于使用JavaScript的数字进行财务计算的一般注意事项:Is floating point math broken?