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

来源:学生作业帮助网 编辑:作业帮 时间:2024/07/11 13:33:34
浮点数有效位?C++书上说单精度浮点数有7个有效位,但是又说它的最小尺寸是6位有效数字,不大明白,
x͒nP_\\J.)( %I **TqqzI-/S9f+t6n죙~OSCRH#G*1->rö(VG7u]9czI(2Ӵ! 4 tlQesU9C/-Q?)bQǣx1t.;C/8C|R6(htA Pg)(yWWn{uoGN"!{G2?wh% {o=eeS! DX1kc۲uYdVD;^FQ17o3h+NN9wϒϬEQn.zcu:H)ܩ{cO9 A!\Ձ')+5(3=E1\4FeȶfjYWh8O`Fnke,i>@CÌA)lGt|>x(:# C^ȇBB/.m՞xqh.ur6sN> PI%ԝ

浮点数有效位?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位.