单精度float与双精度double
单精度 双精度:
单精度,也即float,一般在计算机中存储占用4字节,也32位,有效位数为7位;双精度(double)在计算机中存储占用8字节,64位,有效位数为16位。
IEEE754规范:
单精度格式:1位符号,8位指数,23位小数。
双精度格式:1位符号,11位指数,52位小数。
float是单精度浮点数(32位),double是双精度浮点数(64位)
精度主要取决于尾数部分的位数,float为23位,log(2^23)=6.92,所以float小数部分只能精确到后面6位,加上小数点前的一位,即有效数字为7位。 类似,double 尾数部分52位,log(2^52)=15.65,所以精确到小数点后15位,有效位数为16位。
类型 比特数 有效数字 数值范围
float 32 6-7 -3.4*10(-38)~3.4*10(38)
double 64 15-16 -1.7*10(-308)~1.7*10(308)
其他数据类型的范围:
类型 比特数 数值范围
unsigned int 32 0~2^32 -1 (0~4294967295 )
int 32 -2^31~2^31-1( -2147483648~2147483647)
unsigned long 32 0~2^32 -1 (0~4294967295)
long 32 -2^31~2^31-1 (-2147483648~2147483647)
unsigned long long 64 0~2^64 -1 (1844674407370955161)
long long 64 -2^63~2^63-1(-9223372036854775808~9223372036854775807)
由上可知,double虽然表示的数据范围比long long 大,但是精度没有long long 高。
参考:
https://www.zhihu.com/question/26022206
https://www.cnblogs.com/xiangshancuizhu/archive/2010/12/12/1903719.html
更多推荐
所有评论(0)