简单理解float和double、单精度和双精度

浮点型:至少包含一个小数点,java中有两种:float单精度、double双精度
1.内存占用
一个float数值占用4个字节、32位
一个double数值占用8个字节、64位

因此,能用float尽量不用double。
2.范围
float  -2^128 ~ 2^128
double -2^1024  ~ 2^1024

3.为什么浮点数会有精确度问题?
浮点数是用二进制数据的科学计数法表示的,因此不能精确的表示。就像十进制1/3 0.3333...一样

4.float 32位,double64位是怎么组成的?
float  1位符号位   8位指数位  23位尾数
double 1位符号位   11位指数位  52位尾数

5.有效位数
float      6位。小数点后6位都是准确的,而第7位就不一定
double  15位。

6.关于单精度和双精度的命名?
 为什么叫单精度,为什么叫双精度
1)是因为精确度位数的区别而命名的吗?--不是,至少没有资料表明,它是以这个来命名的。
2)是因为二进制科学计数法存储的尾数(float尾数23,double尾数52)的单双来命名吗?--好像也不是。
所以,只要记住单精度是float,双精度是double就好了。

最后,再来个实例:
5.2345556f  --->输出结果是5.2345557
第7位发生改变,是不是很神奇
double同理,记住,float有效位(准确位)是6位,double是15位

以上纯属个人总结、个人理解,经过书籍查阅,网上查资料得出的总结,若有不对的地方,你TM来打我呀~

你可能感兴趣的:(float,double,浮点型,java)