浮点数有效位?C++书上说单精度浮点数有7个有效位,但是又说它的最小尺寸是6位有效数字,不大明白,

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/28 08:26:32
浮点数有效位?C++书上说单精度浮点数有7个有效位,但是又说它的最小尺寸是6位有效数字,不大明白,

浮点数有效位?C++书上说单精度浮点数有7个有效位,但是又说它的最小尺寸是6位有效数字,不大明白,
浮点数有效位?
C++书上说单精度浮点数有7个有效位,但是又说它的最小尺寸是6位有效数字,不大明白,

浮点数有效位?C++书上说单精度浮点数有7个有效位,但是又说它的最小尺寸是6位有效数字,不大明白,

一个浮点数由三部分组成:符号位S、指数部分E(阶码)以及尾数部分M.

单精度浮点数(float)总共用32位来表示浮点数,其中尾数用23位存储,加上小数点前有一位隐藏的1(IEEE754规约数表示法),2^(23+1) = 16777216.因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位.考虑到第7位可能的四舍五入问题,所以单精度最少有6位有效数字(最小尺寸). 

同样地:双精度浮点数(double)总共用64位来表示浮点数,其中尾数用52位存储,     2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,所以双精度的有效位数是16位.同样四舍五入,最少15位.