为什么我得到无限的答案

时间:2014-02-21 22:06:49

标签: java output infinity

所以,我尝试过多种不同的东西,但是当我为最后一次输出运行时,我仍然得到无限的答案,您认为这个问题是什么?第一个输出工作正常,但第二个和第三个输出没有。他的指数应该是^12*5。我没有做math.pow对吗?

import java.util.Scanner; 

public class CompoundInterest { 
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in); 

        double principal = 0; 
        double rate = 0; 
        double time = 0; 

        double one = 0; 
        double three = 0;
        double five = 0;
        double a, b;
        System.out.print("Enter the amount of the loan: "); 
        a = input.nextDouble(); 

        System.out.print("Enter the Rate of interest : "); 
        b = input.nextDouble(); 

        one = a * Math.pow((1 + b/12),Math.pow(12,1)); 
        three = a * Math.pow((1 + b/12),Math.pow(12,1)); 
        five = a * Math.pow((1 + b/12),Math.pow(12,5)); 

        System.out.println(""); 
        System.out.println("The Compound Interest after 1 year is : " 
        + one); 

        System.out.println(""); 
        System.out.println("The Compound Interest after 3 years is : " 
        + three); 

        System.out.println(""); 
        System.out.println("The Compound Interest after 5 years is : " 
        + five); 
    }
}

2 个答案:

答案 0 :(得分:4)

你实际上有两种权力,例如在第二行(五年利息):

five = a * Math.pow((1 + b/12),Math.pow(12,5));

归结为:a * (1 + b/12)^(12^5)。这是普通32位或64位计算机上接近无穷大的数字。

尝试使用a * Math.pow((1 + b/12), 12 * years);,其中years是感兴趣的年数。

答案 1 :(得分:1)

你正在以12^5的力量提升某些东西,这是非常巨大的,应该会产生无穷大。

尝试

five = a * Math.pow((1 + b/12), 12*5);

代替。