首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一道关于等额本息还款的计算,为什么结果是异常的?有什么不对的地方么

2012-03-16 
一道关于等额本息还款的计算,为什么结果是错误的?有什么不对的地方么?Java codepackage day02import java

一道关于等额本息还款的计算,为什么结果是错误的?有什么不对的地方么?

Java code
package day02;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;/** * 等额本息还款计算 * @param payment   总贷款数额 200000 * @param ret        年利率 如 5.58 * @param num       分期月份数量 180 * @return         每月还款金额 1642.66 */public class Credit {    public static void main(String[] args) throws NumberFormatException,            IOException {        System.out.println("以下程序将实现等额本息还款的计算");        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));        System.out.println("请输入贷款金额:");        double payment = Double.parseDouble(br.readLine());// 贷款金额        System.out.print("请输入年利率:");                     // 年利率        double ret = Double.parseDouble(br.readLine());        System.out.print("请输入贷款期数,即贷款月数:"); // 分期月份数量        int num = Integer.parseInt(br.readLine());                br.close();                System.out.println("每月还款金额为:"+payPerMonth(payment,ret,num));    }    public static double payPerMonth(double payment, double ret, int num) {        // 等额本息还款计算,其中date 为月利率         double date=ret/12;            return (payment*(date*Math.pow(1+date, num)))/Math.pow((1+date),(num-1));    }}


[解决办法]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 等额本息还款计算
 * @param payment 总贷款数额 200000
 * @param ret 年利率 如 5.58
 * @param num 分期月份数量 180
 * @return 每月还款金额 1642.66
 */
public class Credit {

public static void main(String[] args) throws NumberFormatException,
IOException {
System.out.println("以下程序将实现等额本息还款的计算");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入贷款金额:");
double payment = Double.parseDouble(br.readLine());// 贷款金额

System.out.print("请输入年利率:"); // 年利率
double ret = Double.valueOf(br.readLine());

System.out.print("请输入贷款期数,即贷款月数:"); // 分期月份数量
int num = Integer.parseInt(br.readLine());

br.close();

System.out.println("每月还款金额为:"+payPerMonth(payment,ret,num));
}
public static double payPerMonth(double payment, double ret, int num) {
// 等额本息还款计算,其中date 为月利率 
double date=ret/12;
return (payment*(date*Math.pow(1+date, num)))/Math.pow((1+date),(num-1));
}
}

这样就ok double ret = Double.parseDouble(br.readLine());改成double ret = Double.valueOf(br.readLine());
[解决办法]

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * 等额本息还款计算
 * @param payment 总贷款数额 200000
 * @param ret 年利率 如 5.58
 * @param num 分期月份数量 180
 * @return 每月还款金额 1642.66
 */
public class Credit {

public static void main(String[] args) throws NumberFormatException,
IOException {
System.out.println("以下程序将实现等额本息还款的计算");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入贷款金额:");
double payment = Double.parseDouble(br.readLine());// 贷款金额

System.out.print("请输入年利率:"); // 年利率
double ret = Double.valueOf(br.readLine());

System.out.print("请输入贷款期数,即贷款月数:"); // 分期月份数量
int num = Integer.parseInt(br.readLine());



br.close();

System.out.println("每月还款金额为:"+payPerMonth(payment,ret,num));
}
public static double payPerMonth(double payment, double ret, int num) {
// 等额本息还款计算,其中date 为月利率
double date=ret/12;
return (payment*(date*Math.pow(1+date, num)))/Math.pow((1+date),(num-1));
}
}

运行一下代码
[解决办法]
学习咯
[解决办法]

Java code
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;/** * 等额本息还款计算 * @param payment   总贷款数额 200000 * @param ret        年利率 如 5.58 * @param num       分期月份数量 180 * @return         每月还款金额 1642.66 */public class Credit {    public static void main(String[] args) throws NumberFormatException,            IOException {        System.out.println("以下程序将实现等额本息还款的计算");        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));        System.out.println("请输入贷款金额:");        double payment = Double.parseDouble(br.readLine());// 贷款金额        System.out.print("请输入年利率:");                     // 年利率        double ret = Double.parseDouble(br.readLine());        System.out.print("请输入贷款期数,即贷款月数:"); // 分期月份数量        int num = Integer.parseInt(br.readLine());                br.close();                System.out.println("每月还款金额为:"+payPerMonth(payment,ret,num));    }    public static double payPerMonth(double payment, double ret, int num) {        // 等额本息还款计算,其中date 为月利率         /////////////////////////        //年利率为ret/100。        /////////////////////////        double date=ret/100/12;           System.out.println(date);        System.out.println(payment);        System.out.println(num);        //return (payment*(date*Math.pow(1+date, num)))/Math.pow((1+date),(num-1));        //计算公式是这样的。而不是你上面的那个。        return (payment * date * Math.pow(1+date, num)) / (Math.pow(1+date,num) - 1);    }}
[解决办法]
Java code
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.text.DecimalFormat;/** * 等额本息还款计算 * @param payment   总贷款数额 200000 * @param ret        年利率 如 5.58 * @param num       分期月份数量 180 * @return         每月还款金额 1642.66 */public class Credit {    public static void main(String[] args) throws NumberFormatException,            IOException {        System.out.println("以下程序将实现等额本息还款的计算");        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));        System.out.println("请输入贷款金额:");        double payment = Double.parseDouble(br.readLine());// 贷款金额        System.out.print("请输入年利率:");                     // 年利率        double ret = Double.parseDouble(br.readLine());        System.out.print("请输入贷款期数,即贷款月数:"); // 分期月份数量        int num = Integer.parseInt(br.readLine());                br.close();                double value = payPerMonth(payment,ret,num);        DecimalFormat df = new DecimalFormat("#.00");//用DecimalFormat格式化结果        System.out.println("每月还款金额为:"+df.format(value));    }    public static double payPerMonth(double payment, double ret, int num) {        // 等额本息还款计算,其中date 为月利率         /////////////////////////        //年利率为ret/100。        /////////////////////////        double date=ret/100/12;           System.out.println(date);        System.out.println(payment);        System.out.println(num);        //return (payment*(date*Math.pow(1+date, num)))/Math.pow((1+date),(num-1));        //计算公式是这样的。而不是你上面的那个。        double value = (payment * date * Math.pow(1+date, num)) / (Math.pow(1+date,num) - 1);        return value;    }} 

热点排行