当前位置: 技术问答>java相关
太奇怪了,float类型变量居然赋值不了!!!!
来源: 互联网 发布时间:2015-06-07
本文导语: public class Test{ public static void main(String args[]) { try { double a =1.0; float b= (float)a; float c = 1.9; System.out.println(b); } catch(Exception e) {} } } 看看上面,float c = 1.9;居然...
public class Test{
public static void main(String args[]) {
try {
double a =1.0;
float b= (float)a;
float c = 1.9;
System.out.println(b);
}
catch(Exception e) {}
}
}
看看上面,float c = 1.9;居然有会报错,说什么会丢失精度
"Test.java": Error #: 355 : possible loss of precision: double, required: float at line 8, column 15
难道float变量就不能直接赋值么?
难道一定要我这样给float类型变量赋值?float c = (float)1.9;
怎么会这样啊,谁能够解释清楚?
public static void main(String args[]) {
try {
double a =1.0;
float b= (float)a;
float c = 1.9;
System.out.println(b);
}
catch(Exception e) {}
}
}
看看上面,float c = 1.9;居然有会报错,说什么会丢失精度
"Test.java": Error #: 355 : possible loss of precision: double, required: float at line 8, column 15
难道float变量就不能直接赋值么?
难道一定要我这样给float类型变量赋值?float c = (float)1.9;
怎么会这样啊,谁能够解释清楚?
|
具体定义如下:
float类型的数值有一个后缀F,比如3.402F。如果发现一个浮点数没有F后缀,比如3.402,就表示它默认为精度更高的double类型。
至于float a = 1;为什么行,那是因为赋值时,整数1默认为int型,而int类型可以直接向float类型转换,不必要显示造型如float a = (float)1.0;
understand?
float类型的数值有一个后缀F,比如3.402F。如果发现一个浮点数没有F后缀,比如3.402,就表示它默认为精度更高的double类型。
至于float a = 1;为什么行,那是因为赋值时,整数1默认为int型,而int类型可以直接向float类型转换,不必要显示造型如float a = (float)1.0;
understand?
|
by default, literal float numbers are double, try
float c = 1.9F;
float c = 1.9F;
|
1默认是int,可以转换成float,但1.0默认是double,不能转化成float