今天舍友问到的一个小问题,也是很多同学在初学Java中,都会碰到的一个问题
首先,我们查看代码的报错举例
package tv.zhangjia.FloatDemo;
public class Test {
public static void main(String[] args) {
double d = 1.2;
float f = 1.2;//编译报错:Type mismatch: cannot convert from double to float:
//类型不匹配:无法从double转换为float
}
}
为什么会报错呢?是因为你在做赋值运算的时候其实等号两边的类型都是确定的,能赋值成功,而浮点类型默认是double,但是由于float类型和double类型在内存中的二进制表现形式不同,不能像整形那样有时会默认转换,必须要确定类型,带上f
但是注意,并不是说,定义float变量时,必须加f
如下例,并不会报错
package tv.zhangjia.FloatDemo;
public class Test {
public static void main(String[] args) {
double d = 1.2;
float f = 1;//并不会报错,因为编译器会帮你做类型转换
}
}
参考资料: