如何使用javascript查找贷款中的期间数
为什么以下函数对超过6位的贷款金额值不起作用?为什么它会产生不正确的结果 e、 g.如果我输入以下内容如何使用javascript查找贷款中的期间数,javascript,math,calculator,Javascript,Math,Calculator,为什么以下函数对超过6位的贷款金额值不起作用?为什么它会产生不正确的结果 e、 g.如果我输入以下内容 Loan amount: 1,000,000 Interest Rate: 1.09 Monthly Payment: 1,500 结果是:85.39 当我输入超过7位数字时,它返回NaN,例如贷款金额:10000000 function myFunction() { rte = eval (1.09)/1200; pmt = eval (1500); amt = e
Loan amount: 1,000,000
Interest Rate: 1.09
Monthly Payment: 1,500
结果是:85.39
当我输入超过7位数字时,它返回NaN,例如贷款金额:10000000
function myFunction()
{
rte = eval (1.09)/1200;
pmt = eval (1500);
amt = eval (1000000);
document.getElementById("demo").innerHTML=(Math.log(1+(rte/(pmt/(amt)-rte)))/Math.log(1+rte))/12;
}
您可以在这里查看好的,让我们仔细看看您的代码,因为它有一些错误。首先,我们重构它:
eval
function calcLoan(rte, pmt, amt)
{
return (Math.log(1+(rte/(pmt/(amt)-rte)))/Math.log(1+rte))/12;
}
document.getElementById("demo").innerHTML = calcLoan(1.09/1200, 1500, 1000000);
function calcLoan(r, p, a)
{
return Math.log( 1 + (r / (p/a - r) ) ) / Math.log(1 + r) / 12;
}
function debugLoan(r, p, a)
return [ p/a, Math.log( 1 + (r / (p/a - r) ) ), 1 + (r / (p/a - r) ), Math.log(1 + r) ];
}
// call
calcLoan( 1.09/1200, 1500, 1000000 );
//85.38526703746216
// call with bigger number
calcLoan( 1.09/1200, 1500, 10000000 );
// NaN, because we supply negative value to Math.log
// see it yourself
debugLoan( 1.09/1200, 1500, 10000000 );
// [0.00015, NaN, -0.19780219780219777, 0.0009079210482536982]
接下来,我们可以处理函数代码itseft:
function calcLoan(rte, pmt, amt)
{
return (Math.log(1+(rte/(pmt/(amt)-rte)))/Math.log(1+rte))/12;
}
document.getElementById("demo").innerHTML = calcLoan(1.09/1200, 1500, 1000000);
function calcLoan(r, p, a)
{
return Math.log( 1 + (r / (p/a - r) ) ) / Math.log(1 + r) / 12;
}
function debugLoan(r, p, a)
return [ p/a, Math.log( 1 + (r / (p/a - r) ) ), 1 + (r / (p/a - r) ), Math.log(1 + r) ];
}
// call
calcLoan( 1.09/1200, 1500, 1000000 );
//85.38526703746216
// call with bigger number
calcLoan( 1.09/1200, 1500, 10000000 );
// NaN, because we supply negative value to Math.log
// see it yourself
debugLoan( 1.09/1200, 1500, 10000000 );
// [0.00015, NaN, -0.19780219780219777, 0.0009079210482536982]
正如您在[Math.log
reference]()中所看到的,如果您提供负值作为参数,则始终会得到NaN
所以,不仅你的代码是坏的,而且公式是错误的为什么你以神圣的名义使用
eval()
和一个整数参数?我正在从文本框中读取这些值,所以使用eval(),如果你删除了“无所谓”,结果在这个公式中不会改变。你知道为什么它会显示NaN吗?当金额大于7位数时,您的NPER公式不正确,请查看此网页了解正确的公式,请不要使用1.09作为费率值,因为它将被视为109%,而不是9%