float类型为什么进行强制转换

想知道为什么已经都设为float类型了,在if语句中还要强制转换才不报错误?

img

在这个例子中,变量p的类型为float,而0.1的类型为double。在执行p+p*0.1时,编译器会将p自动转换为double类型,然后进行乘法运算。乘法运算的结果是一个double类型的值,然后再将其与p相加。由于double类型的值在内存中占用的空间比float类型的值多,因此在将double类型的值转换为float类型的值时,精度可能会丢失。

因为 p 是 float 类型,而 0.1 是 double 类型。在Java中,如果在 float 和 double 之间进行运算,则结果将自动转换为 double 类型。因此,在这种情况下,编译器会自动将 p 转换为 double 类型,执行加法运算后,结果是 double 类型,需要将其强制转换为 float 类型才能赋值给 m。