java - 如何用 Java 计算贷款方程?

标签 java infinity equations equation-solving divide-by-zero

我正在尝试制作一个程序,允许用户在考虑贷款时确定不同的方面。第一个方程应该确定在给定贷款金额、利率和月数的情况下每月还款额是多少。第二个方程应该确定在给定贷款金额、利率和每月还款额的情况下,一个人必须支付多少笔付款(或几个月)。这是我正在测试的代码,但我似乎无法获得有效的输出。

    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/

相关文章:

java - 如何使用三个点和两个 vector 计算平面方程?

java - 使用 Test Fairy 插件上传 APK 问题

java - 无法执行 Activity 的方法。为什么会出错?

c++ - 无穷大的 float 是否满足这些方程?

gnuplot - 在 gnuplot 中,使用 "set datafile missing",如何同时忽略 "nan"和 "-nan"?

java - JFreeChart 绘制自然对数和 e

用于求解稀疏线性方程组的 C API 库?

java - Jackson 将字符串反序列化为参数化映射

JAVA 使用变量值作为实例名称

math - 榆树有无穷大的常数吗?