import java.util.*;
import java.math.BigDecimal;
import java.math.BigInteger;
/*
* 題目24. 計算複利
* 完成日期:2017/08/09
* 作者:王如馨
*/
public class Num24_compound_interest {
public static void main(String[] args) throws java.lang.NumberFormatException {
BigDecimal r, p ; //每期利率, 每期投入金額
BigDecimal _b = new BigDecimal("1"); //利率要+1(本金)
BigDecimal sum = new BigDecimal("0");//月底本利和
int n; //期數
Scanner sc = new Scanner(System.in);
r = sc.nextBigDecimal(); //輸入每期利率
n = sc.nextInt(); //輸入期數
p = sc.nextBigDecimal(); //輸入每期投入金額
for(int i = 1;i <= n;i++)
{
//計算月底本利和:sum = (sum+p)*(r+1)
sum = (sum.add(p)).multiply(r.add(_b));
}
//把BigDecimal轉換成BigInteger
BigInteger Intsum = sum.toBigInteger();
System.out.println(Intsum);
}
}
--這裡最難的就是期數越大,本利合就會有誤差,為了避免造成誤差所以使用BigDecimal和BigInteger。
--運算是使用.add()和.multiply(),只有同為Big開頭的才能運算,所以我把利率+1的1也宣告成BigDecimal。
--如果把n宣告成Big開頭的話就無法再在for迴圈的()裡使用了。
--在計算完成後把BigDecimal轉換成BigInteger就完成了。
沒有留言:
張貼留言