编程练习float转为long丢失精度

编程练习float转为long丢失精度

// 将一个整型字面值67832赋值给char类型变量c

//并将c的值输出

char c =(char)67832;

System.out.println("c="+c);

//定义一个整型变量n,值为65

int n = 65;

//定义一个字符型变量c1,赋值为n,并输出c1的值

char c1=(char)n;

System.out.println("c1="+c1);

//定义一个长整型变量l,值为987654321

long l =987654321;

//定义一个整型变量i,赋值为l,并输出i的值

    int i = (int)l;

    System.out.println("i="+i);

    //定义一个float类型变量f,将变量l的值赋值给f,并输出f的值

    float f =(float)l;

    System.out.println("f="+f);

    //将float的值f,重新赋值给变量l,并输出l的值

    l=f;

    System.out.println("l="+l);

最后一个l=f是将float转换成long型,为啥会丢失精度呢?

Type mismatch: cannot convert from float to long

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小班 2019-05-07 10:27:29

同学你好,在java中,因为float采用了科学计数法,虽然使用的字节少了,但是表示的范围是大于long的,所以将范围比较大的float转为范围比较小的long需要强转哦!

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


慕UI1055113 2019-05-07 02:29:02

float转换成long需要强制转换,long类型转换为float默认会自动转换。

  • 提问者 Angche #1
    long类型的存储数值的字节是8个字节,float是4个字节,请问为什么4个字节的数值放在8个字节的存储空间内需要强制转换呢?
    2019-05-07 09:16:21
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师