float和double的范围和精度

float 4个字节,32位,float:1bit(符号位)+8bits(指数位+23bits(尾数位)

float:2^23 = 8388608,共七位,意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;

double 8个字节,64位,double:1bit(符号位)+ 11bits(指数位)+ 52bits(尾数位)

double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。

float jingdufloat = 3.327357891F;
System.out.println(jingdufloat);
double jingdudouble = 3.327357891927495768D;
System.out.println(jingdudouble);

输入结果并不是想象中定义的位数,而是:

3.327358
3.327357891927496

 

你可能感兴趣的:(java)