Java基础,float转double


public class FuDian {
    public static void main(String[] args) {
        float f=10.1f;
        double d=(double) f;
        System.out.println(d);
    }
}

我想把变量f赋值给double变量d得出来的结果是:10.100000381469727
所以为什么10.1转成double不是10.100000000000000而出现了381463727

因为是浮点型,容易出现精度丢失。
计算机中计算是转为二进制数进行运算的。
而十进制的小数,二进制表示有时不够精确。浮点数值没办法用十进制来精确表示的原因要归咎于CPU表示浮点数的方法。

float类型转double类型,简单来说就是float是单精度,double是双精度,转换之后会出现精度误差/精度丢失的现象。
所以题主所出现问题就显而易见了,就是精度误差/精度丢失问题。

希望对题主有所帮助!可以的话,帮忙点个采纳!

因为f的小数位比double的小数位要少

精度丢失

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632