这道题目把f变量的值赋给l时,为什么还要类型转换?
来源:4-4 编程练习
半岛王子
2021-01-02 11:46:31
//定义一个长整型变量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 = (long)f; System.out.println("l="+l);
课上不是说float转换成double是隐式类型转换吗,为什么题目中不用强制类型转换把f转换成long,就会报错。
2回答
好帮手慕小脸
2021-01-03
同学你好,
1、是的,float转换为double类型是隐式类型转换(即自动类型转换)
2、为什么题目中不用强制类型转换把f转换成long,就会报错。
答:因为float转换为long类型属于强制类型转换,如上图。
祝学习愉快~
WittChen
2021-01-02
1、个人理解,float => double 是因为double范围比float大, double 完全可以表示 float的数值,因此不需要强转
2、至于长整形float => long 小数可以表示整数的数值,整数无法表示小数的数值,因此小数到整数必须强转,整数到小数会有隐式转换,但根据表示的范围会存在精度丢失的问题。
我说的可能表示太准确,具体听老师的,建议看看以下章节
相似问题