Java基础之float与double的精度问题

如图:

结果:

代码:

public class Main {

    public static void main(String[] args) {
        //float占用4个字节,有效位数7位,多出的四舍五入
        System.out.println("float最大位数:"+0.9999999f);
        System.out.println("float超过7位后:"+0.99999999f);//true  这里有八个9,第八个9四舍五入得1

        //double占用8个字节,有效位数16位,多出的四舍五入
        System.out.println("double最大位数:"+0.9999999999999999);//有十六个9
        System.out.println("double超过16位后:"+0.99999999999999999); //这里有十七个9,第十七个9四舍五入得1

        //比较
        System.out.println("float转为double时有精度损失(超过7位小数):"+(double)0.9999999f);
        System.out.println("float转为double时有精度损失(7位小数内):"+(double)0.1f);
        //比较
        System.out.println("double转为float时有精度损失(超过7位小数):"+(float)0.99999999);
        System.out.println("double转为float时正常(7位小数内):"+(float)0.1);

    }
}
发布了14 篇原创文章 · 获赞 1 · 访问量 248

猜你喜欢

转载自blog.csdn.net/qq_41976749/article/details/104919609