float是32位,double是64位
float 32位中,有1位符号位,8位指数位,23位尾数位。
double 64位中,有1位符号位,11位指数位,52位尾数位
取值范围看指数部分:
float:8为指数位,(-2^7~2^7-1)=(-128~127)
float取值范围:-2^127~2^127 也即 -1.70e+38~+1.70e+38
double:11位指数位,(-2^10~2^10-1)=(-1024~1023)
double取值范围:-2^1023~2^1023 也即 -8.99e+307~+8.99e+307
精度看尾数部分:
float:2^(-23)=0.00000011920928955078125,前面有多少个0,就能精确到哪一位,精度为6位。
double:2^(-52)=0.00000000000000022204460492503130808472633361816,精度为15位。