Java项目开发,求解答~

计算这个列式前20项之和:2/1!- 3/2! + 5/3!-8
/4!+13/5!-21/6!...

先分析一个数列特征
分子:从第三项开始,每一项是前两项的和
分母:是n的阶乘
每一项正负号 交替

public static void main(String[] args) {
        //定义分子前两项
        int a1 = 2;
        int a2 = 3;
        
        //为方便循环,先累计前两项,
        //2.0是为了保证 3/2.0 = 1.5; 3直接除以2是1; 
        double sum = 2 / 1 - 3 / 2.0;
        
        //定义2的阶乘,做为分母的初始基础值
        int factorial = 2;
        
        //从第三项开始自循环
        //第三项符号位正
        boolean sign = true;
        for (int i = 3; i <= 20; i++) {
            //计算分子
            int tmp1 = a1 + a2;
            //更换分子初始时,做为下一个循环计算分子的基数
            a1 = a2;
            a2 = tmp1;
            
            //计算分母
            int tmp2 = factorial * i;
            //更换分母初始时,做为下一个循环计算分母的基数
            factorial = tmp2;
            
            //累计当前值
            if(sign){
                //正号
                //同样分子乘以1.0,是为了获得正确的小数值
                sum +=  tmp1 * 1.0 / tmp2;
            }else {
                //负号
                sum -=  tmp1 * 1.0 / tmp2;
            }
            
            System.out.println("累计["+i+"]项和: " + sum);
            //切换正负号
            sign = sign ? false : true;        
        }
        
        System.out.println(sum);
    }