【问题标题】:Mortgage Calculator Math抵押计算器数学
【发布时间】:2014-08-01 21:11:00
【问题描述】:

我正在尝试构建一个抵押贷款计算器应用程序,但我的数字有点偏,我想知道是否有人对我所缺少的有任何见解。初始付款金额似乎是准确的,但随着您增加年份和利率,该值会略有下降。如果这有什么不同的话,这是给加拿大的。付款金额也不会平均分配到借入的金额中。这是相关代码。

double r = interestAmountValue/1200;

double n = yearAmountValue * 12;
double rPower = pow(1+r, n);
double paymentAmt = loanAmountValue * r * rPower / (rPower - 1);

double totalPaymentd = paymentAmt * n;
double totalInterestd = totalPaymentd - loanAmountValue;

【问题讨论】:

  • 那么r是月利率,n是一年支付的金额,yearAmountValue是月数,paymentAmt是月支付?一些更具描述性的变量名称可能会有所帮助。您一直在尝试哪些值会给出不正确的值?
  • loanAmountValue 为 1,000,000,yearAmountValue 为 30,interestAmountValue 为 8.00%
  • paymentAmt 是这里真正的问题,而不是总付款 - 例如,我刚刚提供给您的数字,总付款金额为 7337.65 - 比我将这些金额输入加拿大时应支付的金额多 90.53 美元抵押贷款计算器
  • 我还应该注意,这是一个带有滑块的应用程序 - 当我的初始值为 10,000 - 1 年 - 1% 每月支付金额是正确的,只有当这些值被放大时,数字才会变为不太准确
  • 您使用的是什么抵押贷款计算器,您的公式是从哪里获得的?

标签: math calculator


【解决方案1】:

double 类型通常实现为浮点数。尽管使用浮点计算可以很快,尤其是在使用专用硬件时,the tradeoff is accuracy。这是一个有据可查的问题:请参阅计算机编程的艺术:半数值算法的第 II 卷进行深入讨论。

如果由您的语言提供,任意精度的数字类型可能会以牺牲一些速度为代价来提高准确性(在现代硬件上的大多数应用程序中,对于典型问题,速度损失可能并不明显)。在 Java 中,这是 BigDecimal 类型。

【讨论】:

  • objective-c 是什么?
  • 我不知道objective-c。
  • 如果没有 OP 给出实际数字就很难判断,但这感觉更像是错误的公式而不是浮点错误。
  • @Teepeemm (.1 + .2) * 1000 = 300.00000000000006 在相当普通的情况下,浮点问题可能会变得很明显。这就是为什么它们在金融环境中是不合适的。
猜你喜欢
  • 2023-04-05
  • 1970-01-01
  • 2014-06-04
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 2015-06-30
相关资源
最近更新 更多