for循环迷了double到底咋用啊

public static void main(String[] args){
int a=2006
for(double i=8;i<=20;i++){
i=i+i*0.25
a++
System.out.println(i)
}
System.out.print("2006年培养学员8万人,每年增长25%,到"+a+"年培训学员人数将达到20万人。");

        }

为啥输出是 10.0 13.75 18.4375 24.296875
而不是10.0 12.5 15.5 19.375

第一次循环的打印语句执行完输出 10.0
接着执行for循环的 i++,这时i已经是11.0
然后执行11+11*0.25,结果自然是13.75

有哪里看不明白的可以滴我哈

img

img

public static void main(String[] args) {
        int a = 2006;//定义年份
        double ren = 8;//初始人数8w
        //由于不确定循环次数,建议使用while死循环,这里我随便设置10次;
        for (int i = 1; i < 10; i++) {
            if(ren<20){//添加if判断语句:如果人数小于20往下执行,超出20则不执行
                ren += (ren * 0.25);//ren=ren*0.25;
                a++;                //执行一次年份+1//输出每次循环结果
                System.out.println(a+"年培养学员人数达到"+(int)ren+"万人。");
            }
            //人数大于20w,则输出年份+人数(这里把double类型的ren变量,强制转化成int整形)
        }System.out.println(a+"年培养学员人数达到"+(int)ren+"万人。");

//        int a=2006;//定义年份
//        double ren=8;//初始人数8w
//        while (ren<20){//死循环条件是人数小于20就会一直重复执行下面代码
//            ren += (ren * 0.25);//ren=ren*0.25//                a++;            //执行一次年份+1//            //每次循环都会输出一次结果
//            System.out.println(a+"年培养学员人数达到"+ren+"万人。");
//        }
//        //循环结束后输出结果
//        System.out.println(a+"年培养学员人数达到"+ren+"万人。");
    }