使用貼現率8%和12%分別計算每個專案的淨現值(NPV)

yesyes1發表於2024-03-07

具體程式碼

package org.example;

import java.math.BigDecimal;

//使用貼現率8%和12%分別計算每個專案的淨現值(NPV)
public class Main {
    public static void main(String[] args) {
        int[] a1 = new int[]{-100000,10000,10000,10000,20000,100000};
        int[] a2 = new int[]{-1000000,200000,200000,200000,200000,300000};
        int[] a3 = new int[]{-100000,30000,30000,30000,30000,30000};
        int[] a4 = new int[]{-120000,30000,30000,30000,30000,75000};

        //貼現率
        double m=0.08;
        double n=0.12;

        double[] t1=new double[6];
        double[] t2=new double[6];

        //計算每一年的每個專案的貼現因子
            for(int j=0;j<=1;j++){
                int k=0;
                int l=0;
                for(int i=0;i<=5;i++) {
                    if (j == 0) {
                        double q = 1.0 / Math.pow(1.0 + m, i);
                        BigDecimal bigDecimal = new BigDecimal(q);
                        q = bigDecimal.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
                        t1[k++]=q;
                        System.out.println("第" + i + "年8%的貼現率的貼現因子是:" + q);
                    } else {
                        double q = 1.0 / Math.pow(1.0 + n, i);
                        BigDecimal bigDecimal = new BigDecimal(q);
                        q = bigDecimal.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue();
                        t2[l++]=q;
                        System.out.println("第" + i + "年12%的貼現率的貼現因子是:" + q);
                    }
                }
            }

        //計算每個專案的淨現值
        double result11=0;
        double result21=0;
        for(int j=0;j<6;j++){
            result11=a1[j]*t1[j]+result11;
            result21=a1[j]*t2[j]+result21;
        }
        System.out.println("專案1的8%的貼現率的淨現值是:"+result11+"; 12%的貼現率的淨現值是:"+result21);

        double result12=0;
        double result22=0;
        for(int j=0;j<6;j++){
            result12=a2[j]*t1[j]+result12;
            result22=a2[j]*t2[j]+result22;
        }
        System.out.println("專案2的8%的貼現率的淨現值是:"+result12+"; 12%的貼現率的淨現值是:"+result22);

        double result13=0;
        double result23=0;
        for(int j=0;j<6;j++){
            result13=a3[j]*t1[j]+result13;
            result23=a3[j]*t2[j]+result23;
        }
        System.out.println("專案3的8%的貼現率的淨現值是:"+result13+"; 12%的貼現率的淨現值是:"+result23);

        double result14=0;
        double result24=0;
        for(int j=0;j<6;j++){
            result14=a4[j]*t1[j]+result14;
            result24=a4[j]*t2[j]+result24;
        }
        System.out.println("專案4的8%的貼現率的淨現值是:"+result14+"; 12%的貼現率的淨現值是:"+result24);

    }
}

效果展示

相關文章