Java基本数据类型:long与float之间的转换疑惑
2010-07-12 00:14
821 查看
有时会听到这样的声音:位数多的向位数小的转换要强制类型转换,那下面的是特例吗?
64位的long转换成32位的float不需要强制类型转换。
Why?本人认为因为float能表示的取值范围比long大得多,long的范围是
-9223372036854775808~~9223372036854775807,
而float的取值范围是-3.4E+38~~3.4E+38;
但是这样的转换后会造成掉失精度,因为float只能保证的有效数字是7位,
如下面的例子。
public class Convert {
public static void main(String[] args) {
float f;
long l = 9999999999999L;
f = l;
System.out.println(f);
}
}
结果:9.9999998E12
64位的long转换成32位的float不需要强制类型转换。
Why?本人认为因为float能表示的取值范围比long大得多,long的范围是
-9223372036854775808~~9223372036854775807,
而float的取值范围是-3.4E+38~~3.4E+38;
但是这样的转换后会造成掉失精度,因为float只能保证的有效数字是7位,
如下面的例子。
public class Convert {
public static void main(String[] args) {
float f;
long l = 9999999999999L;
f = l;
System.out.println(f);
}
}
结果:9.9999998E12
相关文章推荐
- java Byte和各数据类型(short,int,long,float,double)之间的转换
- java Byte和各数据类型(short,int,long,float,double)之间的转换
- java 的基本数据类型之间的转换
- Java 基本数据类型与其包装数据类型以及字符串(String)之间的转换问题
- java 中 json和基本数据类型之间的转换
- java 基本数据类型、包装类、字符串、数组之间的类型转换
- Java中的变量、基本数据类型及它们之间的转换
- JAVA基本数据类型及之间的转换
- java中数据类型转换 Integer String Long Float Double Date
- Java基本数据类型、包装类与String类之间的转换
- JAVA——基本数据类型之间的自动转换
- java基本数据类型之间的转换
- JAVA基本数据类型之间的转换
- java 基本数据类型之间的转换
- 关于java 基本数据类型之间的转换
- java中基本数据类型介绍及其之间的转换
- Java String和基本数据类型之间的转换
- java中数据类型转换 Integer String Long Float Double Date
- Tarena - 变量与java的基本数据类型(int,long,float,double,char,boolean)
- java基础之基本数据类型及之间的转换