低精度转换到高精度:可以自由转换,提高精度。
高精度转化到低精度:如果超出低精度表示范围会出现精度丢失,编辑器会提示错误,如果使用强制转换,会丢失精度。
在java的世界里,如果比int类型小的类型做运算,java在编译的时候就会将它们统一强转成int类型。当是比int类型大的类型做运算,就会自动转换成它们中最大类型那个。
public static void main(String[] args) {
// TODO code application logic here
//基本数据类型之间进行
byte e = 1;
int a = 10;
short b= 3,b1=4;
long f=2l;
float c = 5f;
double d = 4d;
Object h=b+b1;
Object g=b+c;
Object i=c+d;//double>float
Object j=c+f;//float类型>long
if(h instanceof Integer){//true此类型是int
System.out.println("在java的世界里,如果比int类型小的类型做运算,java在编译的时候就会将它们统一强转成int类型。");
}
if(j instanceof Float){//true此类型是float
System.out.print("当是比int类型大的类型做运算,就会自动转换成它们中最大类型那个。");
}
}
PS:不同类型的两个数进行运算,其结果的类型会自动转换为 (取值范围更大)的那个
所以准确的讲,转换规则应该参考取值范围,而不是精度。例如:float>long
所以准确的讲,转换规则应该参考取值范围,而不是精度。例如:float>long