float: 1bit(符号位)+ 8bits(指数位) + 23bits(尾数位)
double: 1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)
float和double的范围是由指数的位数来决定的
float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;
double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
float和double的精度是由尾数的位数决定的。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。
在低于2的23次方时,float类型精度高于int 类型,高于的时候精度低于int 类型。 Float 不安全,慎用,跟钱相关的慎用
在低于2的52次方时,float类型精度高于long 类型,高于的时候精度低于long 类型。
基本类型:short 二进制位数:16
包装类:java.lang.Short
最小值:Short.MIN_VALUE=-32768 (-2的15此方)
最大值:Short.MAX_VALUE=32767 (2的15次方-1)
基本类型:int 二进制位数:32
包装类:java.lang.Integer
最小值:Integer.MIN_VALUE= -2147483648 (-2的31次方)
最大值:Integer.MAX_VALUE= 2147483647 (2的31次方-1)
long 二进制位数:64
long最大值是9223372036854775807(2^64-1)。
long最小值是-9223372036854775808(-2^64)
long的最大值写法:long l = 9223372036854775807L;
long的最小值写法:long l =- 9223372036854775808L;
备注:后面的一个L,必须加上去。