java基本类型自动转换
2017-01-05 20:22
260 查看
具体自动提升类型如上图所示。其中long->float的转换一开始让我感觉有点问题,因为long是64位的,而float却是32位的。
遂找寻答案,参考博客java中long到float的自动转换引发的血案。
原因
首先要知道一点,float能表示的数的范围比long大,那么可想而知,一个long型数可以转为float型。long类型,取值范围是-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807(-2[b]63[/b] ~ 263-1)
float类型,取值范围是2^(-149) ---> (2-2^(-23))*2^127[b],也就是Float.MIN_VALUE和Float.MAX_VALUE[/b]
任何一个long类型的数字都可以使用float类型的表示方法来表示。但是,由于float有精度限制,所以在转换的过程中有可能丢失精度,
如3111111111111111L ---->3.1111111E15---->3111111100465152,在转换回来后就丢失了精度
其次要知道float的32位是如何表示小数的(大学的计算机组成原理课程学过,但忘了,现在学习一下,希望可以记住)。
float内存存储原理
http://steve.hollasch.net/cgindex/coding/ieeefloat.html(IEEE754标准)(1)在10进制中123.456可以被表示成1.23456 × 102 ,在二进制中10100.110可以被表示成1.0100110 × 24
(2)浮点数有精度,超过精度的数无法被表示,如0.0000000000000001就是精确到小数点后x位。
(3)IEEE浮点数有三个部分组成:符号位(S),指数位(E),尾部(M),任何数都能以二进制表示以为S*1.M*2E
表示形式如下: Single: SEEEEEEE EMMMMMMM MMMMMMMM MMMMMMMM Double: SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
(4)总结:float的表示范围为
相关文章推荐
- java语言基础(59)——jdk5自动装箱和拆箱(基本数据类型与包装类之间的转换)
- Java基本类型以及基本类型间的自动转换
- java基本数据类型自动转换
- 13.java语言基础-基本类型的自动转换强制转换
- 小白Java笔记——基本类型的类型转换和表达式类型的自动提升
- java基本数据类型与字符串之间的转换(基本数据类型、对象封装类、自动装箱、自动拆箱)
- Java中基本类型自动转换与强制转换
- 牛客网Java刷题知识点之基本类型的自动转换和基本类型的强制转换
- java基本数据类型自动转换规则
- JAVA的基本类型及自动转换问题
- java学习之旅10--基本数据类型自动转换_强制转型_类型提升问题
- 【JAVA学习】java基本数据类型与字符串之间的转换(基本数据类型、对象封装类、自动装箱、自动拆箱)
- JAVA——基本数据类型之间的自动转换
- java 基本数据类型转换
- 类型转换问题(java会把byte,short和char的运算操作转换为int类型即低精度自动向高精度转换)
- Java 基本数据类型转换
- java 基本数据类型之间的转换
- JAVA基本数据类型转换
- java基本类型转换
- Java基本数据类型:long与float之间的转换疑惑