请问 这段代码中为什么 不能用 double float long 类型 包错:可能损失精度 怎么理解这段话
public static void main (String[] args) {
//int i=-1;
// short i=1;
// long i=-1;
// float i=1;
// double i=-1; int j;
switch(i){
case -1.3:
j=0;
break;
case -2:
j=1;
break;
default:j=3;
}
public static void main (String[] args) {
//int i=-1;
// short i=1;
// long i=-1;
// float i=1;
// double i=-1; int j;
switch(i){
case -1.3:
j=0;
break;
case -2:
j=1;
break;
default:j=3;
}
也就是说类型是有限制的,至于具体是怎样我也忘了。
java就是这么规定的。
一种char 一种int
||
||
\/
byte==》short==》int==》 long
| |
| |
\ / \ /
float==》double
补充:(int==》double 和 long --> float)
说明:==》表示不损失精度-->表示损失精度
由此图可以看出只有在有char,int,short,byte可以保证不损失精度,所以switch只支持这四种!