gpt4 book ai didi

javascript - 为什么我的抵押贷款计算器显示的小数点位置不正确?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:06:52 26 4
gpt4 key购买 nike

我正在研究一个计算器,到目前为止一切顺利,只是将小数点放在了错误的位置,从而导致我的舍入函数给出了错误的数字。代码和示例如下:

$(function() {
// Create USD currency formatter.
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
});

function calculateAI() {
var tax = parseFloat(('2,000').replace(/\$|,/g, ''));
var hoa = parseFloat(('200').replace(/\$|,/g, ''));
var cable = parseFloat(('30,000').replace(/\$|,/g, ''));
var util = parseFloat(('44').replace(/\$|,/g, ''));
var other = parseFloat(('0').replace(/\$|,/g, ''));
var price = parseFloat(('200,000').replace(/\$|,/g, ''));
var years = parseFloat(('30').replace(/\$|,/g, ''));
var percent = parseFloat(('10').replace(/\$|,/g, ''));
var yearp = parseFloat(('3.5').replace(/\$|,/g, ''));

var deposit = (percent / 100) * price;
var loan = price - deposit;
var interest = (yearp / 100) / 12;
var months = years * 12;

var mtotal = loan * interest * (Math.pow(1 + interest, months)) / (Math.pow(1 + interest, months) - 1) || 0;
var mortamount = mtotal;

var ai_total = tax + hoa + cable + util + other + mortamount;

document.getElementById('1870').innerHTML = formatter.format(ai_total);
document.getElementById('1870-mort').innerHTML = mortamount;
}
calculateAI();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="1870-mort"></div>
<div id="1870" style="margin-top: 3px;"></div>

计算器正在给出 --

808.2804380558849

但它应该是——

80.82804380558849

所以我可以将它四舍五入为“81”,然后继续我的计算。

我做错了什么?

最佳答案

下面的代码片段中添加了一些控制台日志记录。这将输出以下内容:

tax = 2000, hoa = 200, cable = 30000, util = 44, other = 0, price = 200000, years = 30,
percent = 10, yearp = 3.5, loan = 180000, deposit = 20000, months = 360,
interest = 0.002916666666666667
mtotal = loan * interest * (Math.pow(1 + interest, months))
/ (Math.pow(1 + interest, months) - 1)
= 180000 * 0.002916666666666667 * (1.0029166666666667 ^ 360)
/ ((1.0029166666666667 ^ 360) - 1)
= 180000 * 0.002916666666666667 * 2.853287165195746
/ 1.8532871651957459
= 808.2804380558849

将相同的数字代入 https://www.desmos.com/scientific给出相同的结果。这里的 Javascript 似乎没有任何明显的错误(例如,由于舍入错误、数字解析、类型转换等)所以我怀疑是公式本身。

$(function() {
// Create USD currency formatter.
var formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
minimumFractionDigits: 2,
});

function calculateAI() {
var tax = parseFloat(('2,000').replace(/\$|,/g, ''));
var hoa = parseFloat(('200').replace(/\$|,/g, ''));
var cable = parseFloat(('30,000').replace(/\$|,/g, ''));
var util = parseFloat(('44').replace(/\$|,/g, ''));
var other = parseFloat(('0').replace(/\$|,/g, ''));
var price = parseFloat(('200,000').replace(/\$|,/g, ''));
var years = parseFloat(('30').replace(/\$|,/g, ''));
var percent = parseFloat(('10').replace(/\$|,/g, ''));
var yearp = parseFloat(('3.5').replace(/\$|,/g, ''));
var deposit = (percent / 100) * price;
var loan = price - deposit;
var interest = (yearp / 100) / 12;
var months = years * 12;

var mtotal = loan * interest * (Math.pow(1 + interest, months)) / (Math.pow(1 + interest, months) - 1) || 0;
console.log('tax = ' + tax + ', hoa = ' + hoa + ', cable = ' + cable + ', util = ' + util + ', other = ' + other + ', price = ' + price + ', years = ' + years + ', percent = ' + percent + ', yearp = ' + yearp + ', loan = ' + loan + ', deposit = ' + deposit + ', months = ' + months + ', interest = ' + interest
+ '\n' + 'mtotal = loan * interest * (Math.pow(1 + interest, months)) / (Math.pow(1 + interest, months) - 1)'
+ '\n' + ' = ' + loan + ' * ' + interest + ' * (' + (1 + interest) + ' ^ ' + months + ') / ((' + (1 + interest) + ' ^ ' + months + ') - 1)'
+ '\n' + ' = ' + loan + ' * ' + interest + ' * ' + (Math.pow(1 + interest, months)) + ' / ' + (Math.pow(1 + interest, months) - 1)
+ '\n' + ' = ' + mtotal);

var mortamount = mtotal;
var ai_total = tax + hoa + cable + util + other + mortamount;
}
calculateAI();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="1870-mort"></div>
<div id="1870" style="margin-top: 3px;"></div>

关于javascript - 为什么我的抵押贷款计算器显示的小数点位置不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46981394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com