我正在尝试制作一个程序,允许用户在考虑贷款时确定不同的方面。第一个方程应该确定在给定贷款金额、利率和月数的情况下每月还款额是多少。第二个方程应该确定在给定贷款金额、利率和每月还款额的情况下,一个人必须支付多少笔付款(或几个月)。这是我正在测试的代码,但我似乎无法获得有效的输出。
float amount = 20000;
float rate = (float) 7.5;
float months = 60;
float payment = 450;
float answer = (float) (((amount*(rate/1200))*(1+(Math.pow((rate/1200), months))))/((1+Math.pow((rate/1200), months))-1));
System.out.println(answer);
float answer2 = (log(payment/amount)-log((payment/amount)-(rate/1200)))/(log(1+(rate/1200)));
System.out.println(answer2);
对于第一个方程,我首先不断收到错误,因为它希望答案是 double 型,并不断告诉我,对于我的速率变量,我无法从 double 型转换为浮点型,因此我必须进行强制转换。一旦错误消失,我就会不断地得到答案。
对于第二个方程,它一直说我不能除以零。有谁知道这个问题的任何解决方案。在网上查看时,似乎我正确地制定了方程式,所以我不知道如何使它们发挥作用。
此外,如果有人碰巧知道确定利率的好公式,那将会非常有帮助。
最佳答案
您缺少一些转换,log
应该是 Math.log
。当我将所有内容都转换为 double 时(为什么你如此坚持使用 float ?使用 double 意味着你不需要将这些转换放在任何地方)我得到以下输出:
Infinity
52.23012630649508
不确定第二个值应该是什么,但这似乎没问题;没有警告,也没有错误。关于第一部分,您要除以零。试试这个:
System.out.println(Math.pow(rate/1200, months));
你会得到以下微小的数字
5.659799424266714E-133
浮点运算将导致分母为零,因为该值 +1 将失去精度,因此:
System.out.println(1+Math.pow(rate/1200, months)-1);
产量 0.0
并且您的分母将导致第二个结果为无穷大。
关于java - 如何用 Java 计算贷款方程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7471449/