欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Java

简述java基本类型自动转换

程序员文章站 2022-04-06 10:33:40
...
简述java基本类型自动转换

具体自动提升类型如上图所示。其中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(-263 ~ 263-1)

  float类型,取值范围是2^(-149) ---> (2-2^(-23))*2^127,也就是Float.MIN_VALUE和Float.MAX_VALUE

任何一个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

简述java基本类型自动转换

表示形式如下:
Single:

(4)总结:float的表示范围为

简述java基本类型自动转换

以上就是简述java基本类型自动转换的详细内容,更多请关注其它相关文章!