假如我們的浮點數:
float a=1.0;
在c++中,假設a占用四個字節,則該數可以由32位的0和1表示。具體表示如下:
0 ?01111111 ?00000000000000000000000
符號位 ?階位 ? 尾數
翻譯壹下:符號位代表著該數值的正負,(階位-127)代表著小數點移動的位數 ,尾數代表以1開頭小數點後面的數字:1.00000000000......(23位)
回到上面的例子:0——正,01111111——127,0000000....——1.000000....
則移動的位數:127-127=0,故1.0000000...中的小數點不移動(浮動),然後將其轉為10進制位+1.0;
再舉個例子:0 10000101 11110110000000000000000
以上是個浮點數在內存中的表示:第壹步看符號位0,所以為正,接著10000101=133,所以浮動的位數位133-127=6;接著看1.11110110000000000000000,將其小數點浮動(移動6位)得到:1111101.10000000000000000,將其轉為十進制:+125.5
綜上:浮點數的浮點二字不是空穴來風,而且可以看出4字節的浮點數小數位最多有23位,轉為十進制最多為7位,這也是為什麽float數的精度只有7位的原因。
Cr:feng__shuai的博客