单精度浮点数(float)与双精度浮点数(double)的区别

作者: 您好简书 | 来源:发表于2019-09-27 10:01 被阅读0次

(1)在内存中占有的字节数不同

单精度浮点数在机内占4个字节

双精度浮点数在机内占8个字节

(2)有效数字位数不同

单精度浮点数有效数字8位

双精度浮点数有效数字16位

(3)所能表示数的范围不同

单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38

双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308

(4)在程序中处理速度不同
一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快

单精度是这样的格式,1位符号,8位指数,23位小数。


image.png

双精度是1位符号,11位指数,52位小数。

image.png

含义:表明单精度和双精度精确的范围不一样,单精度,也即float,一般在计算机中存储占用4字节,也32位,有效位数为7位;双精度(double)在计算机中存储占用8字节,64位,有效位数为16位。原因:不管float还是double 在计算机上的存储都遵循IEEE规范,使用二进制科学计数法,都包含三个部分:符号位,指数位和尾数部分。其中float的符号位,指数位,尾数部分分别为1, 8, 23. 双精度分别为1, 11, 52。精度主要取决于尾数部分的位数,float为23位,除去全部为0的情况以外,最小为2的-23次方,约等于1.19乘以10的-7次方,所以float小数部分只能精确到后面6位,加上小数点前的一位,即有效数字为7位。 类似,double 尾数部分52位,最小为2的-52次方,约为2.22乘以10的-16次方,所以精确到小数点后15位,有效位数为16位。

相关文章

网友评论

    本文标题:单精度浮点数(float)与双精度浮点数(double)的区别

    本文链接:https://www.haomeiwen.com/subject/egpouctx.html