我希望有人可以帮忙解决这个问题:
我目前正在汽车经销商网站上工作。在这个网站上是一个汽车贷款计算器,计算您的每月还款。我已经成功创建了一个计算正确数量的基本计算器。
客户对此并不满意。他们想要一个更高级的计算器,通过气球考虑以及存款,启动和管理费来计算每月还款。
我改变了代码以反映这一点,但现在这件事已经不再适用了。我在代码中找不到任何错误。
以下是应该进行计算的Javascript:
function calculate() {
// Get the user's input from the form. Assume it is all valid.
// Convert interest from a percentage to a decimal, and convert from
// an annual rate to a monthly rate. Convert payment period in years
// to the number of monthly payments.
var principal = document.loandata.principal.value;
var lessDeposit = document.loandata.deposit.value;
var adminFee = document.loandata.admin.value;
var initiationFee = document.loandata.initiation.value;
var interest = document.loandata.interest.value / 100 / 12;
var payments = document.loandata.years.value * 12;
var balloonPercent = document.loandata.balloon.value / 100;
// Now compute the monthly payment figure, using esoteric math.
var balloonFinal = (principal * balloonPercent);
var totalPrincipal = (principal + initiationFee + balloonfinal - lessDeposit);
var x = Math.pow(1 + interest, payments);
var monthly = (totalPrincipal*x*interest)/(x-1);
// Check that the result is a finite number. If so, display the results
if (!isNaN(monthly) &&
(monthly != Number.POSITIVE_INFINITY) &&
(monthly != Number.NEGATIVE_INFINITY)) {
document.loandata.payment.value = round(monthly + adminFee);
document.loandata.total.value = round(monthly * payments);
document.loandata.totalinterest.value =
round((monthly * payments) - principal);
}
// Otherwise, the user's input was probably invalid, so don't
// display anything.
else {
document.loandata.payment.value = "";
document.loandata.total.value = "";
document.loandata.totalinterest.value = "";
}
}
// This simple method rounds a number to two decimal places.
function round(x) {
return Math.round(x*100)/100;
}
此外,如果可能,还需要进行一些验证。与购买价格一样,利率和付款期限是必填字段。但其余的不是。因此,如果有人填写必填字段而不是其他字段,则计算器仍然需要工作,但如果某人没有完成其中一个必填字段,则需要提示他们这样做。
对于那些不知道气球支付是什么的人,这里有一个例子; 购买价格为R117 000 你决定30%的气球付款。在初始购买价格上,30%相当于R35 100.此金额将从您的初始购买价格中扣除,这意味着您的购买价格现在为R81 900.之后是存款,减去,额外费用和管理员和启动费。因此,每月还款是使用R81 900 +额外费用的新购买价格 - 存款(如果有)计算的。为了利息起见,在合同结束后,您必须全额支付气球金额或重新为车辆融资。
PS:关于JavaScript,我是一个完整的新手。所以任何帮助都将不胜感激。
答案 0 :(得分:0)
如果结果为空,则这三个条件中的一个可能会触发else语句:
if (!isNaN(monthly) &&
(monthly != Number.POSITIVE_INFINITY) &&
(monthly != Number.NEGATIVE_INFINITY)) {
答案 1 :(得分:0)
您在JS中输入了拼写错误,您需要使用balloonfinal
代码行中的大写字母F将balloonFinal
更改为var totalPrincipal =
。
principal
,lessDeposit
,adminFee
,initiationFee
也可能需要作为整数/浮点数进行类型转换。